私はしばらくデータフロー/ビッグクエリをいじっていますが、特定のタイプのメソッドを使用してテーブルをクエリするときなど、いくつかの基本的なことについて頭を悩ませることはできません。
+ 短くてシンプル、 + PCollectionで返さBigQueryIO.Read
れる
大きな結果に適して
いますが、結果の新しいテーブル スキーマを返さないため、
両方を (1) にエクスポートするのが難しくなります。 csv ファイル - テーブル ヘッダー、フィールド!! (2) bigquery テーブル - スキーマなし! クエリ結果を bigquery テーブルまたは .csv ファイルに保存するたびに、テーブル スキーマまたは fields-csv ヘッダーを手動で定義する必要があります。
---> これをエレガントに自動的に行う方法はありますか?
クエリを実行するもう 1 つのオプションは、Jobs : Queryを使用することです。
これにも長所と短所があります:
+ クエリ結果のテーブル スキーマを返します
- 認証が必要です。最終的には、正確な単純なクエリのコーディングがはるかに多くなります
-> 非同期モードと同期モード。-オプションを指定した非同期モードを除き、
大きな結果には適していません。バックグラウンドで複数のクエリが発生し、取得された行の完全なリストを取得するために構成する必要があります (??)
- 結果はテーブルに保存できます。ただし、非同期クエリのみが結果を永続的なテーブルに保存できます(一時テーブルだけではありません)。allowLargeResults
疑問が残ります:
(1) どちらの方法がいつ、より優れているか?
(2) 照会するテーブルに非常に大量のデータがあり、非常に大きな結果が得られる場合、どの照会方法が優先されますか?
(3) 非常に大きな結果を処理する場合、テーブルまたは .csv ファイルのどちらのエクスポートが優先されますか?