BigQueryのScheduling Queriesがコマンドから設定できるようになっていた
- 作成
- 2021-04-12
BigQueryのScheduling queriesがコマンドから設定できるようになっていた
いつの間にかBigQueryのScheduling Queriesをコマンドから叩けるようになっていました。これまではWebのUI上でしか設定できなかったのが、コマンドでできるようになったのは正直大きい変化です。
使い方
マニュアルに記載があります。
基本的なコマンドは引用ですが以下のような形です。
bq query \
--display_name=name \
--destination_table=table \
--schedule=interval
このコマンドに必要なオプションを足してselect文を書くと、次のようになります。
bq query \
--display_name=schedule_sample \
--destination_table=dataset_name.schedule_sample \
--schedule="everyday 7:00" \
--replace=true \
--nouse_legacy_sql \
"select * from dataset_name.source_table"
使い方の注意
更新や削除は1行で済まない
コマンド上からScheduling Queriesを追加こそできるものの、更新や削除はbq
コマンド上から簡単にはできません。更新のつもりで同じコマンドを2回叩くと、同じ表示名でScheduling Queriesが設定されてしまいます。削除・更新はマニュアルにも記述はまだありませんでした。
$ bq query \
--display_name=schedule_sample \
--destination_table=dataset_name.schedule_sample \
--schedule="everyday 7:00" \
--replace=true \
--nouse_legacy_sql \
"select * from dataset_name.source_table"
$ bq query \
--display_name=schedule_sample \
--destination_table=dataset_name.schedule_sample \
--schedule="everyday 8:00" \ # ←時間を修正
--replace=true \
--nouse_legacy_sql \
"select * from dataset_name.source_table"
実行してWebUIから確認すると、このように2つのスケジュールが単純に追加された状態になってしまいます。
更新したり削除する場合はWebUIからというのは引き続きのようです。
と思ったらStack Overflowでありますね。Scheduling Queriesはデータ転送の一つなのでbq show
でScheduling Queriesの転送IDを参照すればできそうです。
gcloud - BigQuery - Scheduled Query Update Delete via CLI - Stack Overflow