パーティション分割テーブルへデータを読み込む

このドキュメントでは、パーティション分割テーブルにデータを読み込む方法について説明します。

特定のパーティションへデータを書き込む

特定のパーティションにデータを読み込むには、bq load コマンドでパーティション デコレータを使用します。次の例では、テーブルはすでに日付でパーティショニングされていると仮定し、既存のテーブルの 20160501(2016 年 5 月 1 日)パーティションにデータを追加しています。

bq load --source_format=CSV 'my_dataset.my_table$20160501' data.csv

クエリの結果を特定のパーティションに書き込むこともできます。

bq query \
  --use_legacy_sql=false  \
  --destination_table='my_table$20160501' \
  --append_table=true \
  'SELECT * FROM my_dataset.another_table'

この方法を取り込み時間パーティショニングで使用すると、データが最初に作成された時間に対応するパーティションに古いデータを読み込むことができます。

また、この方法でタイムゾーンを調整することもできます。デフォルトでは、取り込み時間パーティションは UTC 時間に基づきます。パーティションの時刻を特定のタイムゾーンに合わせるには、パーティション デコレータを使用して UTC の取り込み時間をオフセットします。たとえば、太平洋標準時(PST)を使用している場合、対応するパーティション デコレータ $20160501 を使用すると、2016 年 5 月 1 日(PST)で生成されたデータを、その日付のパーティションに読み込むことができます

時間単位列と整数範囲のパーティション分割テーブルの場合、デコレータで指定されたパーティション ID が、書き込まれるデータと一致する必要があります。たとえば、テーブルが DATE 列でパーティション分割されている場合は、デコレータがその列の値と一致する必要があります。一致していない場合は、エラーが発生します。ただし、データが単一のパーティション内にあることがわかっている場合は、パーティション デコレータを指定することで書き込みパフォーマンスを向上させることができます。

上記の例では、パーティションにデータを追加しています。代わりにパーティション内のデータを上書きするには、コマンドごとに異なるフラグ(bq load --replace=true ...bq query --append_table=false ...)を含める必要があります。これらのコマンドのフラグの詳細については、bq loadbq query をご覧ください。

データの読み込みの詳細については、BigQuery へのデータの読み込みの概要をご覧ください。

パーティション分割テーブルへのデータのストリーミング

BigQuery Storage Write API を使用したパーティション分割テーブルへのデータのストリーミングについては、時間単位列パーティショニングをご覧ください。

次のステップ

パーティション分割テーブルの操作の詳細については、次をご覧ください。