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