11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BigQuery Scheduled Queries まとめ

Last updated at Posted at 2019-01-17

初めに

BigQueryのScheduled Queriesに関して、自分用にまとめる

目次

  1. そもそもScheduled Queriesってなんぞ
  2. Scheduled Queriesの初め方
  3. 各設定項目
  4. Schedule
  5. 設定確認
  6. Manual Runs
  7. クエリパラメータ

0. そもそもScheduled Queriesってなんぞ

BigQuery上にて、クエリを定期的に実行して結果をテーブルに納めていくもの。
定期実行が失敗しても Manual Runs を使用して過去分を復旧することができる。

個人的にはデータポータルに表示するデータ類の中間テーブル作成用で使用中。

1. Scheduled Queriesの初め方

旧WEB-UIにて [New Query] テキスト ボックスが出ている状態で[Show Options]の一つ左にある
Schedule Query
ボタンを押すだけ。

新WEB-UIだとボタンが存在しなくて辛い。

2. 各設定項目

●通常設定

クエリ自体の編集は画面上部のテキストエディタ部分で行う。

項目 解説
Display name 表示名
そのまま
Schedule クエリを実行するスケジュール設定
詳細は次で
Destination dataset 結果の書き込みを行うデータセット
Destination table 結果の書き込みを行うテーブル
存在しない場合は作られる
Write preference WRITE_TRUNCATE:
テーブルがすでに存在する場合、テーブルのデータを上書きする

WRITE_APPEND:
テーブルがすでに存在する場合、データをテーブルに追加する
Partitioning field 分割テーブル用

分割無しのテーブルと取り込み時間を使った分割テーブルの場合は空白でOK

分割テーブルを使用する場合は TIMESTAMP または DATE のPartitioning fieldを指定

●Advanced設定

項目 解説
Cloud Pub/Sub topic クエリの実行が終わった後に通知するPub/Subの設定
Send email notifications エラー時に管理者にメール通知するかどうかの設定
Disabled チェック入れるとスケジュール実行されなくなる

3. Schedule

基本的には Repeats で指定した周期で At の時間にクエリが実行される。
繰り返す期間は Starting (UTC) から Ending (UTC) までとなる。

RepeatsCustom にするとある程度自由に設定することができる。
設定例)

30
every wed,fri of jan,jun 13:15
first sunday of quarter 00:00
every 4 hours

4. 設定確認

saveしたScheduled Queriesは旧WEB-UI上の左上の項目
Scheduled Queries
をクリックすると確認できる。

Display nameをクリックして詳細画面に入れば、editなども可能なので必要であればここからいじりましょう。
直近の実行履歴なども確認できます。
Manual Runsもこのページから実行可能なので忘れないように。

5. Manual Runs

一番めんどくさいところ。

[Start Manual Runs]をクリックすると Starting (UTC)Ending (UTC) の設定画面が出てくる。
ここで指定した範囲に対して Scheduleで設定したRepeats周期でAtの時間が存在すれば 実行してくれる。
毎日0時に実行という設定で 1/2 15:00:00 ~1/5 3:00:00 を指定すると、1/3の0時、1/4の0時、1/5の0時の3回実行されることになる。

注意として、 Ending (UTC) は必ず現在より過去を指定しないとエラーになるということ。
現在バグ(?)のせいで、[Start Manual Runs]をクリックするとEnding (UTC)に、使用しているPCの現在時刻がUTC扱いで入ってしまい、そのまま使用すると上記のエラーになってしまう。

ということで、過去の実行もできるようになったが、過去の実行を行って過去のデータを出すには、クエリにいつのデータを取るのかということを教えなければいけない。
そこで出てくるのがクエリパラメータ。

6. クエリパラメータ

表記
@run_time TIMESTAMP型
@run_date DATE型

という形で二種類のパラメータが用意されている。
それぞれクエリが実行される日、つまりManual Runsを使用すれば過去の日付がそれぞれの型で送られてくる。
使い方は下記の通り

SELECT
    COUNT(*)
FROM
    hoge
WHERE
    datestamp = @run_date

@ではなく{}で囲ってあげるとテーブル名などにも使える

#最後に
以上駆け足ですがBigQueryのScheduled Queriesに関してまとめてみた。
ちょっとずつ弄ったり情報を追加する気持ちではいる。

早く新WEB-UIで使えるようにしてくれー!

11
3
0

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
11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?