14

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

編集:

以下の回答として投稿された部分的な解決策を参照してください。使用しないデータの取得に時間がかかるため、最適ではありません。

4

4 に答える 4