値をバケット化する上で階層を使用することは、最適な方法であると言えます。一方、LookML の type: tier
ディメンションでは、これらのバケットは事前定義され、静的です。ユーザーがバケットサイズを変更できるように、動的階層を作成することもあります。Looker では、フィルタ専用フィールド(parameter
パラメータ)とテンプレート言語(Liquid)を組み合わせて、この操作を行うことができます。
カスタム ビニングを使用すると、カスタム フィールドを作成または編集する権限があるときに、Explore に動的階層をネイティブに作成することもできます。
動的階層を作成するには:
-
type: number
のパラメータを作成して、ユーザーが希望する数値のバケットサイズを入力できるフロントエンド フィルタ フィールドとして使用します。 -
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 を入力します。
dynamic_age_tier
ディメンションの SQL 式は、元の ${TABLE}.age
列の年齢値を、例えば 25 などの値をパラメータ値 10 で除算し、2.5 にします。TRUNCATE
関数で、値 2.5 は 2 に切り捨てられ、パラメータ値 10 が乗算されて 20 になります。20 はバケットになります。20 ~ 29 の年齢の値は 20 バケットに含まれます。