Appearance
SQLでの利用パターン
パラメータはテンプレート言語ではなく、通常の SQL 値として埋め込まれます。条件分岐や繰り返しは、CASE や IN などの SQL 構文で表現します。エスケープの詳細はエスケープと動的参照を参照してください。
TIP
下記の {{ラベル}} は説明用の表記です。画面上ではラベル付きの参照チップとして表示されます。
任意の絞り込み
値が未設定のときはゼロ値が展開されます。ゼロ値のときに絞り込みを外すと、未設定でも全件取得として機能します。
sql
SELECT order_id, product_name, ordered_at
FROM orders
WHERE
-- 開始日: ゼロ値 ('1970-01-01') の場合は下限で絞り込まない
CASE WHEN {{start_date}} = '1970-01-01' THEN TRUE ELSE ordered_at >= {{start_date}} END
-- 終了日: ゼロ値 ('1970-01-01') の場合は上限で絞り込まない
AND CASE WHEN {{end_date}} = '1970-01-01' THEN TRUE ELSE ordered_at <= {{end_date}} END
-- 商品名: ゼロ値 ('') の場合は商品名で絞り込まない
AND CASE WHEN {{product_name}} = '' THEN TRUE ELSE product_name LIKE '%{{product_name}}%' END次のように書いても同様です。
sql
SELECT * FROM orders
WHERE 1 = 1
AND (order_date >= {{start_date}} OR {{start_date}} = '1970-01-01')
AND (status = {{status}} OR {{status}} = '')値に応じた分岐
パラメータの値で、選択するカラムや計算を切り替えます。
sql
SELECT
order_id,
CASE {{region}}
WHEN 'EU' THEN amount * 1.20
ELSE amount
END AS final_price
FROM orderssql
SELECT
CASE {{granularity}}
WHEN 'daily' THEN DATE_TRUNC('day', timestamp)
WHEN 'weekly' THEN DATE_TRUNC('week', timestamp)
ELSE DATE_TRUNC('month', timestamp)
END AS period
FROM eventsチェックボックスで参照するテーブル側を切り替える例です。
sql
SELECT * FROM (
SELECT sensitive_column AS data FROM sensitive_data WHERE {{is_admin}} = TRUE
UNION ALL
SELECT public_column AS data FROM filtered_data WHERE {{is_admin}} = FALSE
) t複数値の選択
テキスト複数入力やテキスト複数選択は、カンマ区切りの文字列として展開されます。IN と組み合わせて使います。
sql
SELECT *
FROM sales
WHERE metric_name IN ({{selected_metrics}})選択されたメトリクスだけを集計する例です。
sql
SELECT
SUM(CASE WHEN 'revenue' IN ({{selected_metrics}}) THEN revenue ELSE NULL END) AS revenue_total,
SUM(CASE WHEN 'cost' IN ({{selected_metrics}}) THEN cost ELSE NULL END) AS cost_total,
SUM(CASE WHEN 'profit' IN ({{selected_metrics}}) THEN profit ELSE NULL END) AS profit_total
FROM sales動的な識別子
パラメータを引用符内に置くと、テーブル名やカラム名などの識別子を動的に生成できます。書き方と注意点はエスケープと動的参照を参照してください。