为了在数据库上实质上计算一些任意的R代码,我发现自己的一个非常常见的工作流是这样的:
1)查询远程数据库以将数据下拉到R。
2)在R中执行一些操作,通常用于生成无法在数据库中轻松计算的特征。
3)将数据上传回数据库以供将来访问。
现在,如果数据不是太大,那么这非常简单,生活在整齐中,我会做这样的事情:
ds <- tbl(con, "table") %>%
collect() %>%
mutate(complex_feature = ...)
copy_to(con, ds, "table_transformed", temporary = F)
哪个好(但如果有更好的方法请告诉我)。
但问题来自于我处理的数据集不适合内存。我可以采用split-apply-combine方法并编写一个循环来下载数据集的块,执行操作,并将它们附加到数据库中的表中,但这看起来并不优雅。
我认为这是一种更通用的方法,也许是使用tidyverse中的一些功能技术,但是有没有人有任何想法?
非常感谢你的帮助!