カスタム フィールドの作成権限がある場合、ディメンション用にアドホック カスタム グループを作成するのに、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 ディメンションの場合、バケットの順序は「小」、「中」、「大」です。
英数字で並べ替える場合は、ディメンションに 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 ;;
}