🖥

BigQuery | bq load コマンドでpartitioned table を作成する

2023/08/26に公開

パーティションテーブルを作成する

$ bq mk --time_partitioning_type=DAY dataset.table

適当なログファイルを用意

forload.log
alice
bob
carol

BigQueryにロードする

$ bq load dataset.table forload.log name:string

確認

ロードすると内部的に「今日の日付」が記録される。
これをWHERE句で絞り込むことが出来る。

#LegacySQL
SELECT
  *
FROM
  [dataset.table]
WHERE
  _PARTITIONTIME = TIMESTAMP("2017-05-25")

image.png

日付を指定してロードする

パーティション形式のテーブル名を指定して、そのままロードすれば良い。

$ bq dataset.table\$20170101 forload.log name:string

注意

ドル記号をバックスラッシュ ( \ ) でエスケープするのを忘れないこと!
これを忘れると、サイレントに「現在の時刻」でパーティションされてしまう。(シェルの特殊記号なので)

こんな風に、空の変数として扱われてしまう。

echo $20170101

パーティションの確認

以下のクエリでパーティション情報を確認できる。

#LegacySQL
SELECT
  *
FROM
  [dataset.table$__PARTITIONS_SUMMARY__]

image.png

参考

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2017-05-25

Discussion