Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@hogeta_

BigqueryのSchedule queryを細々活用している話

More than 1 year has passed since last update.

この記事はGoogle Cloud Platform その2 Advent Calendar 2018の8日目の投稿です。

はじめに

今年はBigqueryに様々な機能が追加されました。
UIも新しくなり、大きく変わったなぁと今振り返ると感じます。
やはり今年のBQのアップデートの一番の目玉はBQMLかと思いますが、
個人的には痒いところに手が届くSchedule Queryも非常に気に入っています。

Schedule queryとは

クエリを定期実行してくれるBQの機能です。
BQのUI上で完結できるからプログラミングしなくてよくて便利

使い方

※ 旧UIでしか使えません

bq1.png

UIにSchedule Queryというボタンがしれっと追加されてます。
ボタンを押すと下記のような感じ

bq2.png

任意の値を設定してください。
テーブルを指定するときは日付分割テーブルにすることもできます。
その際は、 table_{run_date} と記述すると実行時間で分割してくれます。
書き込みオプションは上書きやアペンドが設定できます。
※オプションでメールはpubsubに転送通知を設定できますがまだα版のようです。

スケジュール設定は下記のような感じです。

bq3.png

任意の頻度、期間が設定できます。
ただし、注意して欲しいのは時間はUTCです。
日本時間で実行したい場合は9時間プラスして設定してください。

定期実行したいクエリはコンソールに書きますが、下記の特殊なパラメータが使えます。

@run_time :実行時間のtimestamp
@run_date :実行時間のdate

こんな感じで書きます。

select 
  @run_time as excution_time
from
  table

こうするとexcution_timeには実行された時間が値として格納されます。
全て入力したらAddボタンを押してスケジューリング完了です。
登録されたスケジュールはコンソール左上のSchedule Queriesから確認できます。

活用

データレイクチックなテーブルをデイリーでサマってデータマートテーブルを作るみたいに使うのがオーソドックスかな使い方かなと思いますが、私のプロジェクトでの活用方法を1つご紹介します。

◆GA360のログインIDだけを格納するテンプテーブル

GA360のデータを格納するBQからログインIDを出して、それに別テーブルの情報を紐づけて活用することがあります。GA360のデータはかなり量が多く、毎度そのテーブルからログインIDを取ってくるとお金がかかります。そこでSchedule queryでデイリーでログインidと日付を格納するテンプテーブルを作り、そこを参照することによって課金が大幅に下がります。
1発のクエリでこんなに違います(下記はパーティションを12/5に絞った時のデータ量)
・GA360

・テンプテーブル

※ BigQUery Mateを入れるとクエリの金額を表示させることができます
参考:https://qiita.com/amidara/items/a557491615f8e667757c

もちろんschedule queryで取得するさいは7.01GBのスキャンはしますが、その後はテンプテーブルを参照するようにすれば課金額が数百分の一になります。

まとめ

まだベータ版ではありますが、プログラミングせずにバッチ処理のように定期実行できるので重宝する場面は多いと思います。
あまり活用事例を見かけない気がするので、こんな使い方してるよ、というのがあればぜひコメントで教えてください!

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hogeta_
Qiitaは忘備録代わりに使ってます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?