スケジュールクエリ機能について説明します。
スケジュールクエリとは
スケジュールクエリとは、BigQueryに存在する機能の一つであり、指定したクエリを定期的に実行する機能です。
スケジュールクエリでは、クエリを実行する日時や間隔の設定、実行結果をどのデータセットのテーブルに格納するかまで指定できます。
スケジュールクエリの大きな特徴として、クエリの実行結果をテーブルとして保存できる点があります。

通常のクエリを実行する場合、実行結果は単なる表示となります。
しかし、スケジュールクエリを使用すると、実行結果をテーブルとして保存できます。これにより、クエリを実行して得られたデータを後から簡単に利用できるようになります。
スケジュールクエリを利用するメリット
スケジュールクエリを利用するメリットとして大きく2つあります。
1:クエリ実行費用の削減
頻繫に必要となるデータをその都度クエリを実行して取得すると、データ処理量が増え費用が加算されます。
必要なデータは定期的にクエリを実行しテーブルにしておくことで、毎回クエリを実行するよりもデータ分析にかかる費用を削減できます。
特にボリュームの大きいデータを使用するたびにクエリを実行すると、費用が高額になる可能性があります。
スケジュールクエリを使用して定期的に実行し、テーブルとして保存することは費用の削減につながります。
2:データを使いやすい形に変換
スケジュールクエリを使用して、データセットから頻繁に必要なカラムやデータを定期的に抽出できます。
汎用的なデータテーブルに変換することで、より小さなデータで保存できます。
これにより、スケジュールクエリを活用することで、データ分析を効率的に行えるようになります。
Magiqにおけるスケジュールクエリ
Magiqでは、クエリビルダの上部にスケジュールクエリの設定欄があります。
クエリビルダでスケジュールクエリの設定ができ、実行日時や間隔を決められます。
ダッシュボードからスケジュールクエリを選択すると、上のような画面が表示されます。
この画面では、保存先のデータセット、テーブル名、実行日時などを一括して確認できます。
テーブル名をクリックすると上記の画面に遷移します。
ここでは、既に設定したスケジュールクエリの設定変更を行えます。
Magiqでは、スケジュールクエリの作成だけでなく、作成後の管理も効率的に行えます。
スケジュールクエリの設定について
スケジュールクエリの設定について、説明していきます。
1.BigQueryでのスケジュールクエリの設定方法
BigQueryでスケジュールクエリを設定する方法について説明します。
「スケジュール」を選択すると、スケジュールクエリの設定が表示されます。
ここでクエリの実行間隔を指定し、実行結果をどのデータセットに保存するかを指定できます。
BigQuery側での設定には、スケジュールクエリの実行時間設定、データ処理、データの暗号化など詳細に関連するオプションを設定できます。
2.Magiqでのスケジュールクエリの設定方法
①スケジュールクエリの命名
まず、スケジュールクエリを実行した結果に名前を付けます。ここで設定した名前でスケジュールクエリが保存されます。
Magiqで作成したスケジュールクエリは、必ず「magiq_」から始まる名前にしてください。
②スケジュールの設定
次に、クエリを実行する間隔を設定します。毎時、毎日、毎週、毎月、カスタム、オンデマンドのいずれかを選択できます。オンデマンドは、タイミングに制約を受けずにクエリを手動で実行できるオプションです。
「毎時」に設定すると、1時間おきにクエリが実行されます。
クエリの実行のタイミングはクエリを設定した時間に従うため、仮に12:30にクエリを設定した場合、次にクエリが実行されるのは13:30になります。
「毎日」に設定すると、毎日同じ時間にクエリが実行されます。
「毎時」と同様にクエリ設定の時刻に従うため、スケジュールクエリを設定した時間にクエリが実行されます。
「毎週」に設定すると、曜日の一覧が表示されます。スケジュールクエリを実行したい曜日を選択してください。
クエリの実行のタイミングは「毎時」と同様になります。
「毎月」に設定すると、日付の一覧が表示されます。スケジュールクエリを実行したい日付を選択してください。
クエリの実行のタイミングは「毎時」と同様になります。
「カスタム」に設定すると、下のように表示されます。
「カスタム」では、任意の時間に設定できます。
図に表示されている時間間隔は、設定例になります。自由にクエリの実行間隔を設定してみてください。
「オンデマンド」に設定すると、定期的にクエリを実行するのではなく、好きなタイミングでクエリを実行できます。スケジュールクエリを一時的に保存したいときには「オンデマンド」にしておくとクエリは実行されずに保存だけされます。
③宛先データセットの設定
宛先データセットでは、スケジュールクエリの実行結果を保存するデータセットを選択します。
④宛先テーブルの設定
宛先テーブルでは、スケジュールクエリの実行結果に名前を付けます。識別しやすい名前を選択してください。
※rundateについて
宛先テーブル欄の下にある「処理日を末尾に追加」ボタンを押すと、上図のように「_{run_date}」がテーブル名に追加されます。
これは実行日付をテーブル名に含める機能です。スケジュールクエリで「@run_date」というパラメータを使用する場合、実行日がテーブル名で判別できます。
⑤ステータスの設定
「ステータス」ではスケジュールクエリを有効または無効にできます。
有効な状態でスケジュールクエリを設定すると、指定した日時や間隔でスケジュールクエリが実行されます。
補足:スケジュール設定のバリエーション
スケジュールクエリの「高度なオプション」では、「更新時の書き込み方法」と「パーティショニングに使用する列」の設定ができます。
書き込み方法
書き込み方法には、データをテーブルに追加する方法とテーブルを上書きする方法の2つがあります。
テーブルを上書き => テーブル全体をクエリの実行結果にする(=全件洗い替え)
テーブルに追加 => クエリの実行結果をテーブルに追加(既存データはそのまま)
データの用途に合わせて設定してください。
パーティショニング
パーティショニングでは、日付ごとにデータを分割して保存できます。
パーティショニングに使用する列には、日付を示すカラムを入力できます。ただし、宛先テーブルの設定で「{run_date}」を指定していた場合、併用できません。
まとめ
スケジュールクエリを活用することで、効率よくデータ処理を行えます。
ぜひご活用ください。