カスタム フィールドの作成権限がある場合、ディメンション用にアドホック カスタム グループを作成するのに、Looker 式内で論理関数使用したり、sql
パラメータやtype: case
フィールドでCASE WHEN
論理を作成したりする必要はありません。
また、カスタム フィールドの作成権限がある場合、数値タイプのディメンション用にアドホック カスタム ビンを作成するのに、Looker 式内で論理関数を使用したり、type: tier
LookML フィールドを作成したりする必要はありません。
バケット化は、Looker でカスタム グループ化ディメンションを作成する場合に非常に便利です。
Looker では、以下の 3 つの方法でバケットを作成できます。
バケット化に tier
を使用
整数バケットを作成するには、dimension
型を tier
として定義します。
dimension: users_lifetime_orders_tier { type: tier tiers: [0,1,2,5,10] sql: ${users_lifetime_orders} ;; }
style
パラメータを使用すると、探索時の階層の表示方法をカスタマイズできます。style
の 4 つのオプションは次のとおりです。
例:
dimension: age_tier { type: tier tiers: [0,10,20,30,40,50,60,70,80] style: integer sql: ${age} ;; }
style
パラメータの classic
はデフォルトで、Tx[x,x]
という形式を取ります。Tx
は階層番号を示し、[x,x]
は範囲を示します。次の画像は、Users Count が Users Age でグループ化された Explore のデータ表です。
次の図は、他の style
パラメータ オプションの例を示しています。
-
interval
- 階層の最小値と最大値を示す[x,x]
の形式 -
integer
- 階層の最小値と最大値を示すx to x
の形式 -
relational
- 値が階層の最小値以上かつ階層の最大値未満であることを示す、>= x and <x
の形式
注意点
tier
をディメンション フィルと組み合わせて使用すると、予期しない階層バケットが発生する可能性があります。
たとえば、type: tier
ディメンション Age Tier には、ディメンション フィルが有効になっていると 0 未満および 0 ~ 9 の階層バケットが表示されます。ただし、データにはそれらのバケットの経過時間の値は含まれていません。
Age Tier のディメンション フィルが無効になっていると、バケットはデータで使用可能な年齢の値をより正確に反映し、バケット 10 ~ 19 から開始します。
ディメンション フィルを有効または無効にするには、[Explore] 内のディメンション名にカーソルを合わせてフィールド レベルの歯車アイコンをクリックし、[Remove Filled in Tier Values] を選択して無効にするか、[Fill Missing Tier Values] を選択して有効にします。
Looker tiers
について詳しくは、ディメンション、フィルタ、パラメータ タイプに関するドキュメント ページをご覧ください。
バケット化に case
を使用する
case
パラメータを使用すると、カスタムの並べ替えでカスタム名のバケットを作成できます。case
パラメータは、UI フィルタおよび可視化での値の表示方法、順序付け方法、使用方法を制御するのに役立つため、固定されたバケットのセットにおすすめします。たとえば、case
を使用すると、ユーザーはフィルタで定義されたバケット値のみを選択できます。
case
を使用してバケットを作成するには、注文額のバケットなどのディメンションを定義します。
dimension: order_amount_bucket { case: { when: { sql: ${order_amount} <= 50;; label: "Small" } when: { sql: ${order_amount} > 50 AND ${order_amount} <= 150;; label: "Medium" } when: { sql: ${order_amount} > 150;; label: "Large" } else:"Unknown" } }
通常、case
パラメータは、バケットがリストされている順序で値を並べ替えます。order_amount_bucket
ディメンションの場合、バケットの順序は Small、Medium、Large です。
英数字で並べ替える場合は、ディメンションに alpha_sort
パラメータを
次のように追加します。
dimension: order_amount_bucket { alpha_sort: yes case: { when: { sql: ${order_amount} <= 50;; label: "Small" } when: { sql: ${order_amount} > 50 AND ${order_amount} <= 150;; label: "Medium" } when: { sql: ${order_amount} > 150;; label: "Large" } else:"Unknown" } }
出力に異なる多数の値が必要なディメンションの場合(WHEN
または ELSE
ステートメントで各出力を定義する必要があります)、またはより複雑な ELSE
ステートメントを実装する場合については、次のセクションで説明する SQL CASE WHEN
を使用することをおすすめします。
case
パラメータの詳細については、フィールド パラメータのドキュメント ページをご覧ください。
バケット化に SQL CASE WHEN
を使用する
複雑なバケット化や、よりきめ細かな ELSE
ステートメントの実装には、SQL CASE WHEN
ステートメントをおすすめします。
たとえば、注文の宛先に応じて異なるバケット化方法を使用できます。SQL の CASE WHEN
ステートメントを使用すると、複合バケットのディメンションを作成できます。その場合、THEN
ステートメントは文字列ではなくディメンションを返します。
dimension: compound_buckets { sql: CASE WHEN ${orders.destination} = 'US' THEN ${us_buckets} WHEN ${orders.destination} = 'CA' THEN ${canada_buckets} ELSE ${intl_buckets} END ;; }