Bigqueryのスケジューリング設定で気を付けること3選

本記事ではBigqueryで実際にスケジューリング設定を行う際に出てきた壁3つとその解決方法をお伝えします。
目次
はじめに
この記事はBigqueryでスケジューリング初心者である筆者が、実際にスケジューリング設定を行う際に出てきた壁とその解決方法をお伝えしたいと思います。
是非「Bigqueryでスケジューリング設定したいんだけど、なぜかエラーが止まらない」や「これからスケジューリング設定したいんだけど、どんなところを気をつけたら良いの?」と思われている方は最後まで読んでみてください。
1. 時間設定は自分の国の時間とUTC時間が必要
初歩的な部分ではありますが、意外とここでつまづくかもしれません。筆者は最初どちらも自分の国の時間を設定していました。
しかもエラーが出ずにそのままスケジューリング設定ができてしまうので、「設定した時間にスケジューリングが実行されない」ことに気付きにくいです。そのためこの記事を読んだ方は初めから時間の設定は正しく行いましょう。
上のUTCとは世界基準の時間であり、イギリスの時間(※サマータイムを除く)と一致しています。つまり、基本的には「日本時間ー9時間」がUTCとなり、上の図であれば日本時間14:30にスケジューリング実行を行う場合、上枠の「時刻」にはUTCの05:30(14:30の9時間前)を、開始日と実行時間はJST(日本時間)でスケジューリング実行を開始したい時間を設定しましょう。
2. スケジューリング保存時に”Not found dataset in location XX”というエラーが出た時
このエラーが出たとき、筆者はデータセットのlocationがUSになってしまっており、「東京(リージョン名は”asia-northeast1”)と設定されていないのが問題なのかも」と考えておりました。しかしこのエラーはdatasetの位置する国について言及しているものでもなく、このXXには大きな意味はあまりなさそうです。
このエラーはテーブルの格納場所について言っています。スケジューリングするコードでCREATEしていない場合、スケジューリング時に「クエリ結果の書き込み先」を指定すると思います。この時書き込み先を正しく指定できないと上記のようなエラーが出ます。
ここでデータセットを
– 既存のデータセットを正しく指定する
– 新しく作成する
このどちらかを正しく行うと、上記のようなエラーは消えました!
3. "configuration.query.destinationtable cannot be set for scripts"というエラーが出た時
筆者の場合はコード内に「CREATE」文でテーブルを作成しているにも関わらず、クエリの書き込み先を指定した場合に出てきてしまったエラーであり、おそらくコード内でテーブルの保存まで行っている場合にBigqueryのスケジューリング過程でテーブルを作成し保存しようとすると出てきてしまうエラーであると考えられます。
解決策として、コード内にCREATE文があるならば「✅クエリ結果の宛先テーブルを設定する」のチェックを外すとおそらくエラーが消えると思います。
さいごに
本記事では実際に筆者がBigquery上でスケジューリングを行う際につまづいた3つの壁と、その解決方法をお伝えしました。この記事を参考に、スケジューリングが上手く実行できればとても嬉しいです。またスケジューリングは設定して終わりではありません。定期的に無事に実行されているか、見守りましょう!