Looker 中的分組

如果您有權建立自訂欄位,就可以為維度建立臨時自訂群組,而無須在 Looker 運算式中使用邏輯函式,或在 sql 參數或 type: case 欄位中開發 CASE WHEN 邏輯。
您也可以為數值類型維度建立臨時自訂區間,無須在 Looker 運算式中使用邏輯函式,或在具有建立自訂欄位權限時,需要開發 type: tier LookML 欄位。

值區功能在 Looker 中建立自訂分組維度時非常實用。

在 Looker 中建立分桶的方法有三種:

  1. 使用 tier dimension 類型
  2. 使用 case 參數
  3. 在 LookML 欄位的 SQL 參數中使用 SQL CASE WHEN 陳述式

使用 tier 進行分組

如要建立整數值區間,只要將 dimension 類型定義為 tier 即可:

dimension: users_lifetime_orders_tier {
  type: tier
  tiers: [0,1,2,5,10]
  sql: ${users_lifetime_orders} ;;
}

您可以使用 style 參數,自訂探索時顯示的層級。style 的四個選項如下:

  1. classic
  2. integer
  3. interval
  4. relational

例如:

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] 則表示範圍。下圖為「探索」資料表格,其中「使用者人數」以「使用者年齡」分組:

資料表格中顯示的「使用者年齡」區間為 T02[10,20],表示年齡介於 10 到 20 歲的使用者人數為 808 人。

下圖顯示其他 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"
    }
  }

如果維度需要在輸出內容中顯示多個不同的值 (這會要求您使用 WHENELSE 陳述式定義每個輸出內容),或是您想要實作較複雜的 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 ;;
}