Liquidパラメーターを使用して動的なメジャーを作成する #Looker

2023.07.28

Looker勉強中のikumiです。今回は、Liquidパラメーターを使用した動的メジャーを作成したので、その内容を記載していきます。

パラメーターとは

そもそも、LookMLを記述する際には様々なパラメーターを組み合わせて記述していきますが、「パラメーター」と呼ばれるパラメーターも存在します。今回は、その「パラメーター」パラメーターを使用します。

利用シーン

例えば、「直近30日の登録ユーザー数が見たい」「直近90日の登録ユーザー数が見たい」など、ユーザーが入力する任意の値に応じて定義が変化する指標が欲しい際などは、このパラメーターを使用することで実現できます。

早速やってみる

ユースケース

ECのデータで、直近n日のオーダー数を集計したいといったケースを想定して進めます

Viewファイルの記述

まずは、以下の通りViewファイルを記載しました。

  dimension: order_id {
    label: "オーダーID"
    type: number
    sql: ${TABLE}.order_id ;;
  }

  dimension_group: created {
    label: "受注日"
    type: time
    timeframes: [time, date, week, month, year, raw]
    sql: ${TABLE}.created_at ;;
  }

  dimension: days_since_sold {
    hidden: yes
    sql: DATE_DIFF(CURRENT_DATE(),${created_date}, DAY) ;;
  }

  parameter: days_last_order_date {
    label: "直近購入日の指定期間"
    type: number
    default_value: "28"
  }

  measure: count_last_28d {
    label: "直近指定期間以内のオーダー数"
    type: count_distinct
    sql: CASE
        WHEN ${days_since_sold} <= {% parameter days_last_order_date %}
              AND ${days_since_sold} > 0
        THEN ${order_id} END;;
  }
  • dimension: days_since_sold :まず受注経過日のディメンションを作成
  • parameter: days_last_order_date :n日に設定する閾値のパラメーターを作成
  • measure: count_last_28d :CASE文の中でLiquidを記述し、条件指定します

Explore画面

Viewファイルで定義したパラメーターは、フィールドピッカーの中のフィルター専用フィールドの欄に表示されます。

作成したパラメーターとメジャーを選択してクエリを実行してみます。パラメータがフィルタ欄に追加され、任意に編集できるようになっています。

さて、ここからがポイントになってきますが、実際に投げられたクエリを見てみます。Viewファイルで記述していた{% parameter days_last_order_date %}の部分が、パラメーターで設定した値の「28」に変換されてSQLが実行されていることがわかります。

値を変更してみます。

このように、値をベタ書きしないでもパラメーターの値によってクエリの内容を書き換えてくれる便利な機能となっています。

最後に

今回はこちらの公式ヘルプの内容を参考に作成してみました。便利な機能なので、使いこなせるようにもっと勉強していきたいと思います。