diff --git a/xarray/backends/zarr.py b/xarray/backends/zarr.py index abf0c7372eb..82f79efaaee 100644 --- a/xarray/backends/zarr.py +++ b/xarray/backends/zarr.py @@ -311,6 +311,7 @@ def open_store_variable(self, name, zarr_array): attributes = dict(attributes) encoding = { "chunks": zarr_array.chunks, + "preferred_chunks": dict(zip(dimensions, zarr_array.chunks)), "compressor": zarr_array.compressor, "filters": zarr_array.filters, } diff --git a/xarray/core/dataset.py b/xarray/core/dataset.py index 0a3c969c617..cc8c14dda68 100644 --- a/xarray/core/dataset.py +++ b/xarray/core/dataset.py @@ -390,8 +390,10 @@ def _get_chunk(var, chunks): if isinstance(chunks, int) or (chunks == "auto"): chunks = dict.fromkeys(var.dims, chunks) - preferred_chunks_list = var.encoding.get("chunks", {}) - preferred_chunks = dict(zip(var.dims, var.encoding.get("chunks", {}))) + preferred_chunks = var.encoding.get("preferred_chunks", {}) + preferred_chunks_list = [ + preferred_chunks.get(dim, shape) for dim, shape in zip(var.dims, var.shape) + ] chunks_list = [ chunks.get(dim, None) or preferred_chunks.get(dim, None) for dim in var.dims