動的階層の作成

値をバケット化する上で階層を使用することは、最適な方法であると言えます。一方、LookML の type: tier ディメンションでは、これらのバケットは事前定義され、静的です。ユーザーがバケットサイズを変更できるように、動的階層を作成することもあります。Looker では、フィルタ専用フィールド(parameter パラメータ)とテンプレート言語(Liquid)を組み合わせて、この操作を行うことができます。

カスタム ビニングを使用すると、カスタム フィールドを作成または編集する権限があるときに、Explore に動的階層をネイティブに作成することもできます。

動的階層を作成するには:

  1. type: number のパラメータを作成して、ユーザーが希望する数値のバケットサイズを入力できるフロントエンド フィルタ フィールドとして使用します。
  2. Liquid 変数 {% parameter parameter_name %} を使用して、パラメータ値を参照するディメンションを作成します。このディメンションにより、さまざまなバケットが決まります。バケットサイズは、フロントエンド フィルタ フィールドでユーザーが入力した値(parameter パラメータ)に動的に変更されます。

たとえば、デベロッパーが動的な年齢階層を作成して、ユーザーがカスタム範囲で年齢の値をバケット化できるようにします。

次の例の SQL 構文は、データベース言語に合わせて調整する必要があります。
  parameter: age_tier_bucket_size {
    type: number
  }

  dimension: dynamic_age_tier {
    type: number
    sql: TRUNCATE(${TABLE}.age / {% parameter age_tier_bucket_size %}, 0)
          * {% parameter age_tier_bucket_size %} ;;
  }

ユーザーが Explore の [年齢] 列の階層値を選択できるようになりました。たとえば、年齢を 10 年単位のバケットにグループ化して表示する場合は、[年齢階層バケットサイズ] フィルタに値 10 を入力します。

[ユーザーの年齢階層バケットサイズ] フィルタで、[ユーザーの動的年齢階層] と [ユーザー数] を値 10 でフィルタして探索する。

dynamic_age_tier ディメンションの SQL 式は、元の ${TABLE}.age 列の年齢値を、例えば 25 などの値をパラメータ値 10 で除算し、2.5 にします。TRUNCATE 関数で、値 2.5 は 2 に切り捨てられ、パラメータ値 10 が乗算されて 20 になります。20 はバケットになります。20 ~ 29 の年齢の値は 20 バケットに含まれます。