ブロックリファレンス

BLOCKS Reference

BigQuery

クエリーの並列実行

概要

このブロックは、変数の内容によってBigQueryの複数のクエリーを並列に実行します。

複数パラメーターを参照する変数」で指定された配列の個数分のクエリーを並列に実行します。変数展開時は、この配列内のオブジェクトで指定されたものを優先的に参照します。なければ、フロー間共通変数およびフロー内実行変数を参照します。

プロパティ

プロパティ名 説明
ブロック名

編集パネルに配置した当該ブロックの表示名が変更できます。

ブロックリストパネル中のブロック名は変更されません。

GCPサービスアカウント このブロックで使用するGCPサービスアカウントを選択します。
SQL文法

「クエリー」プロパティで使用するクエリーの文法を以下から選択します。

クエリー

実行するクエリーを指定します。

クエリ接頭辞open_in_new#legacySQL/#standardSQL)を指定すると、[SQL文法]プロパティの指定に関わらず、クエリ接頭辞に指定したSQL文法でクエリーが実行されます。

  • 変数展開の指定が可能
  • %形式の文字列書式の指定が可能

    クエリー内の%形式の文字列書式を有効にする]プロパティのチェックボックスにチェックが付いているときのみ有効です。

    %Yや%mなどの%形式の文字列書式をBigQueryにそのまま渡したい場合は、%の部分を%%としてください。例えば、%Yや%mの場合は、%%Y、%%mとします。BLOCKSにより%%が%へ変換され、%Y、%mがBigQueryに渡ります。

クエリー内の%形式の文字列書式を有効にする

クエリー内の%形式の文字列書式を有効にするかしないかを指定します。

チェックボックスにチェックを付けると、クエリー内の%形式の文字列書式が有効になります。チェックボックスのチェックを外すと、クエリー内の%形式の文字列書式が無効になります。

結果格納先のデータセット

クエリー結果格納先のデータセットIDを指定します。

変数展開の指定が可能][%形式の文字列書式の指定が可能]
結果格納先のテーブル

クエリー結果格納先のテーブルIDを指定します。

変数展開の指定が可能][%形式の文字列書式の指定が可能]
複数パラメーターを参照する変数 配列データを受け取る変数を指定します。指定内容が文字列のときはJSONとしてデコードしてから利用します。
空でないテーブルが存在したとき

出力先のテーブルが存在したときの動作を選択します。
選択できる動作は、次のいずれかです。

追加:追加で書き込みます。
上書き:テーブルを空にしてから書き込みます。
エラー:テーブルが空でなければ失敗となります。

クエリーの優先度

クエリーの優先度を選択します。選択できる優先度は、次のいずれかです。

  • インタラクティブ(直ぐに実行、同時実行数の制限を受ける)
  • バッチ(リソースがあるときに実行、同時実行数の制限を受けない)
ブロックメモ このブロックに関するメモが記載できます。このブロックの処理に影響しません。
1000件以上の結果を許可する 1000件以上の結果を含むクエリーの実行を許可します。「結果格納先のデータセット」および「結果格納先のテーブル」が省略された場合は、許可できません。
フラットな結果を許可する テーブルのネストしたフィールドを展開するかどうかを指定します。展開しないとした場合は、「1000件以上の結果を許可する」を許可にできません。
クエリーキャッシュを有効にする クエリーキャッシュを有効にするかしないかを指定します。
ユーザー定義関数 ユーザー定義関数(User Defined Function/UDF)機能を使用する場合に参照する関数定義を文字列で指定します。複数指定できます。
"gs://"で始まる文字列の場合は、URIとして解釈されて、対応するGCS上のオブジェクトから関数定義を読み込みます。
最大料金バイト数 クエリーの料金を制限します。クエリーで処理するデータ量が、ここで指定されたバイト数を超える場合は、そのクエリーは実行されません(エラーとなり料金は発生しません)。

使用例

この例では、Googleスプレッドシートに保存されたキャンペーン情報を「スプレッドシートのデータ取得」ブロックで取得し、そのデータを「クエリーの並列実行」ブロックに渡すことで、各キャンペーンの分析を並列に実行します。分析結果は、キャンペーンごとに異なるBigQueryテーブルに格納されます。

まず、Googleスプレッドシートで以下のようなキャンペーン情報を準備します。

  • Googleスプレッドシート名:キャンペーン情報
  • シート名:パラメーター
  • シート内容:
    campaign_id target_channel result_table
    CAMP1 Email email_campain_results
    CAMP2 Social social_campain_results
    CAMP3 TV tv_campain_results

次に、「スプレッドシートのデータ取得」ブロックを使って、Googleスプレッドシートのデータを変数に格納します。このブロックでデータを変数に格納することで、「クエリーの並列実行」ブロックで期待されるデータ形式を準備します。

プロパティ名
ファイル名 https://docs.google.com/spreadsheets/d/[キャンペーン情報のスプレッドシートID]
結果を格納する変数 _

このブロックを実行すると、変数_には、スプレッドシートの各行がオブジェクトになった配列データが格納されます。

[0] [1] [2]
campaign_id CAMP1
target_channel Email
result_table email_campain_results
campaign_id CAMP2
target_channel Social
result_table social_campain_results
campaign_id CAMP3
target_channel TV
result_table tv_campain_results

最後に、「クエリーの並列実行」ブロックを使って、キャンペーンごとの分析を並列に実行します。各データは変数展開を使ってクエリーと格納先テーブルで参照することで、スプレッドシートの内容に応じて動的に処理できます。

プロパティ名
クエリー
SELECT
  campaign_id,
  target_channel,
  COUNT(*) AS engagement_count
FROM
  `example.campaign_data`
WHERE
  campaign_id = '${campaign_id}' AND
  target_channel = '${target_channel}'
GROUP BY
  campaign_id,
  target_channel
結果格納先のデータセット example
結果格納先のテーブル ${result_table}
複数パラメータを参照する変数 _

このブロックを実行すると、以下のようにスプレッドシートの各行に対応したテーブルが作成されます。

  • email_campain_results
    campaign_id target_channel engagement_count
    CAMP1 Email 2
  • social_campain_results
    campaign_id target_channel engagement_count
    CAMP2 Social 2
  • tv_campain_results
    campaign_id target_channel engagement_count
    CAMP3 TV 2

この使用例は、「クエリーの並列実行」ブロックを活用してキャンペーンデータを自動的に集計・分析する一つの方法を示しています。このようなアプローチを応用することで、マーケティング施策の評価サイクルを迅速化し、PDCAを円滑に回せるようになる可能性があります。実際のビジネスでは、この例を参考にしつつ、各組織のデータ構造や分析ニーズに合わせて柔軟にカスタマイズしていくことが重要です。

全体のフローは、下図の通りです。

この情報は役に立ちましたか?