如果您有權建立自訂欄位,就可以為維度建立臨時自訂群組,而無須在 Looker 運算式中使用邏輯函式,或在sql參數或type: case欄位中開發CASE WHEN邏輯。
您也可以為數值類型維度建立臨時自訂區間,無須在 Looker 運算式中使用邏輯函式,或在具有建立自訂欄位權限時,需要開發 type: tier LookML 欄位。
值區功能在 Looker 中建立自訂分組維度時非常實用。
在 Looker 中建立分桶的方法有三種:
使用 tier 進行分組
如要建立整數值區間,只要將 dimension 類型定義為 tier 即可:
dimension: users_lifetime_orders_tier {
type: tier
tiers: [0,1,2,5,10]
sql: ${users_lifetime_orders} ;;
}
您可以使用 style 參數,自訂探索時顯示的層級。style 的四個選項如下:
例如:
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] 則表示範圍。下圖為「探索」資料表格,其中「使用者人數」以「使用者年齡」分組:
下圖顯示其他 style 參數選項的範例:
-
interval:格式為[x,x],表示等級的最低值和最高值 -
integer:格式為x to x,表示等級的最低值和最高值 -
relational:使用>= x and <x格式,表示值大於或等於最低等級值,且小於最高等級值
注意事項
將 tier 與維度填入功能搭配使用,可能會導致出現非預期的層級值。
舉例來說,當您啟用維度填補功能時,type: tier 維度「年齡層」會顯示「低於 0」和「0 到 9」等級桶,即使資料中沒有這些桶的年齡值:
當您停用「年齡層」維度的填入功能時,資料集會更準確地反映資料中可用的年齡值,從「10 到 19 歲」資料集開始:
如要啟用或停用維度填補功能,請將滑鼠游標懸停在「探索」中的維度名稱上,然後按一下欄位層級的 齒輪圖示,並選取「移除已填入的等級值」停用,或「填入缺少的等級值」啟用。
如要進一步瞭解 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 ;;
}