Dask 时间维度的chunksize不适用于xr.open\u mfdataset

Dask 时间维度的chunksize不适用于xr.open\u mfdataset,dask,python-xarray,Dask,Python Xarray,使用xr.open_mfdataset,我希望在时间维度中分块;但是,尽管将“time”的chunksize设置为12,它仍然保持为1。但“lon”和“lat”的分块是有效的。我怎样才能在“时间”维度中分块?谢谢-PG VARS_USED = ["LANDFRAC", "PSL", "PRECC", "PRECL", "TREFHT", "ICEFRAC", "PRECSL_H218OS", "PRECSC_H218Os", "PRECRL_H218OR", "PRECRC_H218Or", "

使用xr.open_mfdataset,我希望在时间维度中分块;但是,尽管将“time”的chunksize设置为12,它仍然保持为1。但“lon”和“lat”的分块是有效的。我怎样才能在“时间”维度中分块?谢谢-PG

VARS_USED = ["LANDFRAC", "PSL", "PRECC", "PRECL", "TREFHT", "ICEFRAC", "PRECSL_H218OS", "PRECSC_H218Os", "PRECRL_H218OR", "PRECRC_H218Or", "PRECSL_H2OS", "PRECSC_H2Os", "PRECRL_H2OR", "PRECRC_H2Or"]

WSOL_DATA_PATH = '/glade/p/ncgd0030/Steig/90_WSOL/b.ie12.BG1850C5CN.f19_g16.90_WSOL.001_daily.cam.h0.000[2-4]-??_avg_fc.nc'

WSOL_DATA = xr.open_mfdataset(WSOL_DATA_PATH, decode_cf=False, chunks={'time':12, 'lon':72,'lat':48})[VARS_USED]
输出:

<xarray.Dataset>
Dimensions:        (lat: 96, lon: 144, time: 36)
Coordinates:
* lon            (lon) float64 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 20.0   ...
* time           (time) float64 380.0 409.5 439.0 469.5 500.0 530.5 561.0 ...
* lat            (lat) float64 -90.0 -88.11 -86.21 -84.32 -82.42 -80.53 ...
Data variables:
LANDFRAC       (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PSL            (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECC          (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECL          (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
TREFHT         (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
ICEFRAC        (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECSL_H218OS  (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECSC_H218Os  (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECRL_H218OR  (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECRC_H218Or  (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECSL_H2OS    (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECSC_H2Os    (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECRL_H2OR    (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
PRECRC_H2Or    (time, lat, lon) float32 dask.array<shape=(36, 96, 144), chunksize=(1, 48, 72)>
Attributes:
Conventions:               CF-1.0
source:                    CAM

尺寸:(纬度:96,经度:144,时间:36)
协调:
*lon(lon)浮动64 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 20.0。。。
*时间(时间)浮动64380.0409.5439.0469.5500.0530.5561.0。。。
*lat浮动64-90.0-88.11-86.21-84.32-82.42-80.53。。。
数据变量:
LANDRAC(时间、纬度、经度)浮点32 dask.array
PSL(时间、纬度、经度)浮点32 dask.array
PRECC(时间、纬度、经度)浮点32 dask.array
PRECL(时间、纬度、经度)浮动32 dask.array
TREFHT(时间、纬度、经度)浮动32 dask.array
ICEFRAC(时间、纬度、经度)浮动32 dask.array
PRECSL_H218OS(时间、纬度、经度)浮动32 dask.array
PRECSC_H218Os(时间、纬度、经度)浮动32 dask.阵列
PRECRL_H218OR(时间、纬度、经度)浮动32 dask.array
PRECRC_H218Or(时间、纬度、经度)浮动32 dask.array
PRECSL_H2OS(时间、纬度、经度)浮动32 dask.array
预装水(时间、纬度、经度)浮动32 dask.阵列
PRECRL_H2OR(时间、纬度、经度)浮动32 dask.array
PRECRC_H2Or(时间、纬度、经度)浮动32 dask.阵列
属性:
公约:CF-1.0
资料来源:澳门国际机场专营股份有限公司

打开的MFU数据集中
当前仅在每个输入文件中包含块。如果每个文件只包含一个时间点,那么设置更大的块大小将不会有任何效果

如果希望沿时间维度添加更大的块,则需要在之后添加一个单独的
.chunk()
调用。例如

WSOL_DATA = WSOL_DATA.chunk({'time': 12})

每个输入文件有一个时间点吗?谢谢你给我指点rechunk。您能详细介绍一下之后如何添加.rechunk()调用吗?我尝试了WSOL_DATA.rechunk()的迭代,但WSOL_数据是“数据集,没有属性‘rechunk’”。我还尝试重新调整数据变量WSOL_data.data_vars['PSL'].rechunk(),但这不起作用,因为“DataArray没有属性'rechunk'”。哦,修复了。该方法实际上被称为
chunk