有时,当通过连接到我的Oracle
数据库时ROracle
,dbplyr
我会运行一个dplyr::collect
操作,该操作会获取比预期更多的数据,并且 R 可以处理。
这可能会使 R 崩溃,并且通常表明我应该在获取之前进一步过滤或聚合数据。
如果能够在选择是否获取结果之前检查结果的大小(无需运行两次查询),那就太好了。
让我们命名collect2
它的变体collect
将允许这样做:
预期行为:
small_t <- con %>% tbl("small_table") %>%
filter_group_etc %>%
collect2(n_max = 5e6) # works fine
big_t <- con %>% tbl("big_table") %>%
filter_group_etc %>%
collect2(n_max = 5e6) # Error: query returned 15.486.245 rows, n_max set to 5.000.000
这可能吗?
我也对使用ROracle
/DBI
不使用的解决方案持开放态度dplyr
,例如:
dbGetQuery2(con, my_big_sql_query,n_max = 5e6) # Error: query returned 15.486.245 rows, n_max set to 5.000.000
编辑:
请参阅下面作为答案发布的部分解决方案,这不是最佳解决方案,因为有些时间浪费在获取我没用的数据上。