テンプレートフィルタを使って動的な派生テーブルを作る #looker

2023.11.16

Looker勉強中のikumiです。今回のメインの題材となるテンプレートフィルタは便利な機能なのですが、なんとなく難しいイメージでなかなか手を付けられていなかった機能です。しかし、一度試してみると理解も進みますので一緒にトライしてみましょう!

テンプレートフィルタとは

テンプレートフィルタとはユーザーが動的に条件を切り替えられるフィルターのこと。ユーザー側で自動的に条件を切り替えられるようになることで、分析できる幅が広がるといったメリットがあります。他のブログでもテンプレートフィルタについて紹介されているので、こちらも参照してみてください。

ユースケース①:動的なブランドの絞り込み

まずはテンプレートフィルタを使って、ブランドの絞り込み条件を任意に変更できる派生テーブルを作成するケースを試してみます

Viewの定義

今回のケースでは、顧客のLTV金額を算出するにあたって特定のブランドの絞り込み条件を変更できるようにしたいと思います。以下のように、filterパラメーターbrandを作成し、派生テーブル内のWHERE句にLiquidを使ってフィルタを適用させました。

view: test_template_filter {
  derived_table: {
    sql:
      SELECT
    order_items.user_id
        ,SUM(sale_price) as ltv
      FROM scema.table_name
      WHERE {% condition brand %} brand {% endcondition %}
      GROUP BY 1
      ;;
  }

filter: brand {
    type: string
    label: "ブランドの絞り込み"
    suggest_explore: brand_name
    suggest_dimension: brand_name.brand_name
  }

ここでできるだけ、suggest_exploresuggest_dimensionを使ってフィルタする値に候補値が出るようにしてあげると親切です。

Exploreで確認

filterパラメーターで作成したフィルタは、フィールドピッカー上のFILTER-ONLY-FIELDSに表示されました。ここから任意の条件でフィルターをかけることができます。

発行されたSQLを見てみましょう。今回フィルタの条件は、『ブランドの絞り込み is Ray-Ban』になっているので、WHERE句では『WHERE (products.brand = 'Ray-Ban')』となっていました。

条件を変えてみましょう。次は、『ブランドの絞り込み is Ray-Ban,Calvin Klein』にすると、WHERE句では『WHERE ( products.brand IN ('Ray-Ban', 'Calvin Klein'))』になっています。

このように、Explore画面でフィルタの内容と条件も自由に変更できるのがテンプレートフィルタのメリットとなっています。

ユースケース②:動的な日付の絞り込み

今度はテンプレートフィルタを日付に適用してみます

Viewの定義

今度は、filterパラメーターのtypeをdateにして日付のフィルタを作成しました。派生テーブルへの適用方法は先ほどと同じです。

view: test_template_filter {
  derived_table: {
    sql:
      SELECT
    order_items.user_id
        ,SUM(sale_price) as ltv
      FROM scema.table_name
      WHERE  {% condition date_filter %} order_items.created_at {% endcondition %}
      GROUP BY 1
      ;;
  }

filter: date_filter {
    type: date
    label: "集計期間"
  }

Exploreで確認

日付での絞り込みの場合も、問題なくフィルタが適用されていました!dateタイプのfilterパラメーターの場合、Explore上に出てくるフィルタ条件も、日付でのフィルタリングを想定した条件が出てきていますので、任意の期間などでのフィルタリングも可能となっていました。

さいごに

いかがでしたでしょうか。テンプレートフィルターの適用方法はすごくシンプルでした。Lookerでいかにこれを活用していくかが大事になってくるので、今後も色々なパターンを試してみたいと思います。