Open5
【BI】metabase

metabase,BQ
メモ

開始日終了日のフィルター(デフォルト値あり)
select *
from データセット.テーブル
WHERE True
AND (event_date between [[date({{start_date}}) #]](select min(event_date) from データセット.テーブル)
AND [[date({{end_date}}) #]](select max(event_date) from データセット.テーブル)
)
order by event_date desc
-
start_date
に値が入ると[[]]
の中が有効になり#
で後続がコメントアウトされる -
#
でコメントアウトされるかはDBによって違うので注意(BQ) - coalesceでやる方法もあったがうまくいかなかった

フィールドフィルターの注意点
フィールドフィルターはエイリアスと互換性がありません
上で述べたように、SQL クエリでエイリアスを使用すると、フィールド フィルターは機能しません。たとえば、次のコード (エイリアスあり) は機能しません。
つまり可読性の向上のためエイリアスが使用できない。
metabase上でJOINするとエイリアスつけられない制約から、可読性がめちゃ悪くなる
極力ビューを作成してそれに対して参照すべし
SELECT
`data_warehouse.user_demographics`.`gender` -- エイリアスがつけれない弊害
,COUNT(DISTINCT `data_warehouse.user_demographics`.`user_id`) AS `unique_user_count`
FROM
`data_warehouse.user_demographics` -- BQはこの書き方
WHERE
`data_warehouse.user_demographics`.`gender` NOT LIKE "Unknown"
[[AND {{age_group}}]]
GROUP BY
`data_warehouse.user_demographics`.`gender`
ORDER BY
`unique_user_count` DESC

フィルターウィジェットのデフォルト値を設定する
SELECT
*
FROM
orders
WHERE
DATE(created_at) = [[ {{dateOfCreation}} --]] CURRENT_DATE

文字列から部分一致するアイデア
[[AND names like "%"||{{name}}||"%"]]