カスタムクエリでパラメータを使用する

パラメータを使用すると、データソースから基になる SQL クエリにパラメータを渡すことで、レスポンシブでカスタマイズ可能なレポートを作成できます。カスタムクエリ内でパラメータを使用するには、パラメータ化されたクエリの実行に記載されている構文のガイドラインをご利用ください。


標準パラメータ

カスタムクエリでは、次のパラメータを使用できます。

パラメータ

目的

@DS_START_DATE

レポート期間の開始日を取得します。

@DS_END_DATE

レポート期間の終了日を取得します。

@DS_USER_EMAIL

ログイン ユーザーのメールアドレスを取得します。

これらのパラメータを使用する手順は次のとおりです。

  1. 接続パネルの [パラメータ] セクションで、使用するパラメータを有効にします。@DS_USER_EMAIL パラメータを有効にすると、データポータルからメールアドレスへのアクセスを許可するよう求められます。
  2. クエリでは、パラメータ名を入力する際に大文字の書式設定を使用します。

データスタジオは、すべてのパラメータ値をテキスト文字列として渡します。パラメータ文字列をカレンダーの日付、数値、その他のデータ型として処理するには、PARSE_DATEPARSE_TIMESTAMPCAST などの適切な SQL 変換関数を使用します。

日付パラメータを使用して、基になるクエリに期間を渡す

レポートに期間設定が含まれている場合、閲覧者はその期間設定を使用して、異なる開始日および終了日をデータベースから直接リクエストできます。

メール パラメータを使用して、データへの行レベルのアクセスを提供する

メール パラメータを使用すると、レポート、データソース、原因分析にログインしているユーザーに関連付けられたデータのみを表示できます。そのユーザーは、Google アカウントにログインし、データポータルにメールアドレスを提供することに同意する必要があります。閲覧者が同意しない場合、このデータソースに基づくレポートのすべてのグラフに承認エラーが表示されます。


カスタム パラメータ

カスタムクエリでは、データポータルの管理画面で作成したパラメータを使用できます。

接続ページでパラメータを作成する

  1. カスタムクエリ エディタの [パラメータ] セクションで、[+ パラメータを追加] をクリックします。
  2. パラメータ オプションを設定します。
  3. [OK] をクリックします。

データソースでカスタム パラメータを非表示にする

デフォルトでは、レポートの編集者はレポート内でカスタム パラメータを直接変更できます。レポートの編集者がパラメータ値を変更できないようにするには、データソースの設定でパラメータを非表示にします。

  1. [その他のオプション] をクリックします。
  2. [非表示] をクリックします。

詳しくは、レポートのデータソース パラメータを許可するをご覧ください。


カスタムクエリでパラメータを使用する

カスタム SQL クエリの本文で、ハードコードされた値を @ で始まる識別子(例: @param_name)に置き換えます。


パラメータの例

パラメータの使用例を次に示します。

カスタム パラメータの例

SELECT word FROM `TABLE` WHERE corpus = @corpus;

CONTAINS と数値しきい値を含む文字列

SELECT * FROM `bigquery-public-data.baseball.games_post_wide`
WHERE REGEXP_CONTAINS(gameId, @s)
AND attendance > @attendance LIMIT 100;

複数選択の文字列パラメータ

UNNEST が複数選択パラメータ値の配列リストをフラット化する方法に注目してください。

SELECT * from user.users as user WHERE display_name in UNNEST(@name);

標準形式を使用した日付パラメータ

SELECT creation_date, age, display_name from user.users as user
WHERE creation_date > PARSE_DATE('%Y%m%d', @DS_START_DATE)
AND creation_date < PARSE_DATE('%Y%m%d', @DS_END_DATE);

マイクロ秒単位の Unix タイムスタンプを使用する日付パラメータ

SELECT creation_date, age, display_name from user.users as use
WHERE creation_date > UNIX_MICROS(PARSE_TIMESTAMP('%Y%m%d', @DS_START_DATE))
AND creation_date < UNIX_MICROS(PARSE_TIMESTAMP('%Y%m%d', @DS_END_DATE))

メール パラメータの例

SELECT * FROM Sales WHERE sales-rep-email = @DS_USER_EMAIL;