JuliaDataCubes / YAXArrays.jl

Yet Another XArray-like Julia package
https://juliadatacubes.github.io/YAXArrays.jl/
Other
89 stars 14 forks source link

KeyError: key :time not found #330

Closed Balinus closed 9 months ago

Balinus commented 10 months ago

Hello,

using MWE from #329, I can't save the dataset on disk due to a key error. Here's the adapted MWE:

#using NCDatasets
#using URIs
# using Dates
using YAXArrays
using NetCDF
using Zarr

# URL RDRS sur Pavics
url = "https://pavics.ouranos.ca/twitcher/ows/proxy/thredds/dodsC/datasets/reanalyses/day_RDRSv2.1_NAM.ncml"

# Lecture de la structure
ds = open_dataset(url)

filename = "day_RDRSv2.1_NAM_vDataset.zarr"
savedataset(ds, path=filename, driver = :zarr)

# Returns following error
KeyError: key :time not found

Stacktrace:
 [1] getindex(h::Dict{Symbol, Int64}, key::Symbol)
   @ Base ./dict.jl:484
 [2] #93
   @ ./none:0 [inlined]
 [3] iterate
   @ ./generator.jl:47 [inlined]
 [4] collect_to!(dest::Vector{Int64}, itr::Base.Generator{Base.KeySet{Symbol, Dict{Symbol, DimensionalData.Dimensions.Dimension}}, YAXArrays.Datasets.var"#93#99"{Dict{Symbol, Int64}}}, offs::Int64, st::Int64)
   @ Base ./array.jl:840
 [5] collect_to_with_first!
   @ ./array.jl:818 [inlined]
 [6] collect(itr::Base.Generator{Base.KeySet{Symbol, Dict{Symbol, DimensionalData.Dimensions.Dimension}}, YAXArrays.Datasets.var"#93#99"{Dict{Symbol, Int64}}})
   @ Base ./array.jl:792
 [7] savedataset(ds::YAXArrays.Datasets.Dataset; path::String, persist::Nothing, overwrite::Bool, append::Bool, skeleton::Bool, backend::Symbol, driver::Symbol, max_cache::Float64, writefac::Float64, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ YAXArrays.Datasets ~/.julia/packages/YAXArrays/lvvMa/src/DatasetAPI/Datasets.jl:562
 [8] top-level scope
   @ In[15]:2
kongdd commented 9 months ago

I guess this issue is because DD.dim2key(ti) and DD.name(ti) return different value.

using DimensionalData
using DimensionalData: DimensionalData as DD
using Dates

ti = Ti(DateTime(2001):Month(1):DateTime(2002))

@show DD.dim2key(ti);
@show DD.name(ti);
DD.dim2key(ti) = :Ti
DD.name(ti) = :Time
kongdd commented 9 months ago

can close now. solved by #337