Oracle
時折、データベースROracle
に接続するときに、R が処理できるよりも多くのデータを取得dbplyr
する操作を実行します。dplyr::collect
これにより R がクラッシュする可能性があり、フェッチする前にデータをさらにフィルタリングまたは集計する必要があるという兆候であることがよくあります。
結果を取得するかどうかを選択する前に、結果のサイズを確認できると便利です (クエリを 2 回実行する必要はありません)。
これを可能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
編集:
以下の回答として投稿された部分的な解決策を参照してください。使用しないデータの取得に時間がかかるため、最適ではありません。