为了从本质上计算数据库上的一些任意 R 代码,我发现自己所处的一个非常常见的工作流程是这样的:
1)查询远程数据库以将数据下拉到R中。
2) 在 R 中执行一些操作,通常是为了生成在数据库中不容易计算的特征。
3) 将数据上传回数据库以供将来访问。
现在,如果数据不是太大,那么这很简单,并且生活在 tidyverse 中,我会做这样的事情:
ds <- tbl(con, "table") %>%
collect() %>%
mutate(complex_feature = ...)
copy_to(con, ds, "table_transformed", temporary = F)
这很好(尽管如果有更好的方法请告诉我)。
但是当我处理一个不适合内存的数据集时,问题就来了。我可以采用拆分-应用-组合方法并编写一个循环来下载数据集的块、执行操作并将它们附加到数据库中的表中,但这似乎不太优雅。
我在想有一种更通用的方法可以做到这一点,也许使用 tidyverse 中的一些功能技术,但是有人有什么想法吗?
非常感谢您的帮助!