前提
- 執筆者がよく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");'