従来のデータ モデリングでは、時間単位および日単位のロールアップ テーブルを作成して、データ ストレージを削減し、クエリの応答時間を改善します。ただし、同様のロールアップ テーブルを作成しようとすると、「応答が大きすぎて返せません」というエラーが発生しやすくなります。BigQuery でロールアップ テーブルを作成するための推奨される方法は何ですか? ストレージとクエリのコストを削減するために、データを削減する必要があります。
どうも!
従来のデータ モデリングでは、時間単位および日単位のロールアップ テーブルを作成して、データ ストレージを削減し、クエリの応答時間を改善します。ただし、同様のロールアップ テーブルを作成しようとすると、「応答が大きすぎて返せません」というエラーが発生しやすくなります。BigQuery でロールアップ テーブルを作成するための推奨される方法は何ですか? ストレージとクエリのコストを削減するために、データを削減する必要があります。
どうも!
最近発表された BigQuery 機能により、大きな結果が得られます。
フラグと宛先テーブルを指定できるようになりました。任意のサイズの結果は、指定されたテーブルに格納されます。
https://developers.google.com/bigquery/docs/queries#largequeryresults
すべてのデータを単一のテーブルに追加しているように聞こえますが、クエリを実行するための小さなテーブルを作成したいと考えています...それは正しいですか?
1 つのオプションは、データを 1 時間ごとのスライスにロードしてから、write_disposition=WRITE_APPEND を使用してテーブル コピー操作を実行することにより、日次および「すべて」のテーブルを作成することです。または、クエリで複数のテーブルを使用できます。たとえばselect foo from table20130101,table20130102,table20130102
。(これは結合ではなく、UNION ALL を実行することに注意してください。これは、bigquery クエリ構文の癖です)。
テーブルのレイアウトを変更するのが難しい場合、現在、クエリ結果のサイズを大きくすることはサポートされていませんが、これは最もリクエストの多い機能の 1 つであり、優先度が高い機能です。
また、bigquery は可能な限り並列でクエリを処理するため、小さなテーブルを作成してもクエリのパフォーマンスが向上するとは限りません。テーブルの一部のみを保存する場合を除き、ストレージ コストは削減されません。もちろん、大きなテーブルに対してクエリを実行するとコストが高くなるため、クエリのコストが削減されます。
シナリオをもう少し説明していただければ、より具体的なアドバイスを提供できるかもしれません。