LoginSignup
3

More than 3 years have passed since last update.

[Tips]BigQueryでパーティションのないテーブルをあるテーブルにコピーする

Last updated at Posted at 2019-09-23

前提

  • 執筆者がよくbqコマンドを忘れるので、備忘録的に残しておく。
  • Bigqueryのパーティションは、日付タイプ。
  • 作成時のIAM権限は、要確認。(特に、コピー元に参照権限があるか?)

設定方法

コピー元のテーブルスキーマの取得
bq show --schema <コピー元 project name>:<コピー元 dataset name>.<コピー元 table name> > source.json
コピー先に空のテーブルを生成
bq mk --schema source.json --time_partitioning_type=DAY <コピー先 project name>:<コピー先 dataset name>.<コピー先 table name>
パーティションを絞ってコピー
  • 前提
    • 標準SQLを指定
    • 既にデータがある場合、置換を許容
    • "log_date"は、コピー元の日付パーティションの参考になりそうなカラム
bq query \
--use_legacy_sql=false \
--replace=true \
--destination_table '<コピー先 project name>:<コピー先 dataset name>.<コピー先 table name>$<YYYYMMDD>' \
'select * from `<コピー元 project name>.<コピー元 dataset name>.<コピー元 table name>` where date(<log_date>) = date("YYYY-MM-DD");'

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3