如何根据data.table分组编写箭头数据集?

Alb*_*uez 2 r dplyr data.table apache-arrow

我有一个名为的数据集,df其中有年、月和日变量。我想使用该write_dataset函数输出具有标准箭头数据集语法的文件夹,如下图所示:

在此输入图像描述

每个文件夹内将有month=1、month=2,依此类推。

现在,为了创建它,我使用了以下代码:

df <- df %>% group_by(year, month, day)
output_folder = "my/path"
arrow::write_dataset(df, 
                     output_folder, 
                     format = "parquet", 
                     )
Run Code Online (Sandbox Code Playgroud)

但是,我的数据集太大,我想利用data.table快速分组的优势。我做同样的事情的方法如下:

grouping_cols = c("year", "month", "day")
setkeyv(df, grouping_cols)

arrow::write_dataset(df, 
                     output_folder, 
                     format = "parquet", 
                     )
Run Code Online (Sandbox Code Playgroud)

但是,现在结果未分组,并且返回单个 .parquet 文件(未充分利用 的潜力arrow::write_dataset)。

在此输入图像描述

有没有办法让相同的数据集按指定列进行分组,但基于而data.table不是dplyr分组?

Dea*_*gor 6

如果您查看文档,默认partitioning参数就是 的dataset内容dplyr::group_vars。该概念不会自动转换为 data.table 模拟,因此如果您不使用对象dplyr作为输入,则必须提供该参数。

arrow::write_dataset(df, 
                    output_folder,
                    partitioning=grouping_cols,
                    format = "parquet", 
                    )
Run Code Online (Sandbox Code Playgroud)