透過 DRY LookML 盡量提高程式碼重複使用性:使用 set 參數定義可重複使用的欄位清單

如要提高 LookML 專案的效率並簡化維護作業,可以使用 LookML set 參數。set 參數可讓您在 fields 參數或鑽取欄位中,將專案中可能經常重複的欄位分組。如果您使用集合來分組重複欄位,則可在模型中建立單一位置,維護該欄位群組。

這個頁面包含下列範例,說明如何使用 LookML 集合,提升 LookML 專案的效率和可維護性:

食材

必要條件

範例:將相同的下鑽欄位新增至多項指標

假設您希望使用者在「探索」、「Look」或資訊主頁中看到銷售指標時,能夠向下鑽研查看更精細的使用者詳細資料,因此在「探索」使用者介面中選取「Count」指標的值時,會開啟對「ID」、「City」、「State」和「Country」欄位的查詢:

選取「Count」指標的值後,系統會開啟 ID、城市、州/省和國家/地區欄位的查詢。

您可以建立名為 user_details 的集合,其中包含 idcitystatecountry 欄位,然後在多項指標中參照這些欄位,供使用者深入瞭解:


set: user_details {
  fields: [id, city, state, country]
}

user_details 集可用於定義 count 指標的鑽取欄位


measure: count {
  type: count
  drill_fields: [user_details*]
}

在本例中,語法 [set_name*] 用於指定當您深入瞭解「Count」指標時,user_details 中的欄位會顯示在查詢結果中。

然後重複使用這組欄位,建立其他下鑽欄位。舉例來說,您可以將 LookML 程式碼 drill_fields: [user_details*] 新增至 order_counttotal_sale_priceaverage_sale_price 評估指標:


measure: order_count {
  view_label: "Orders"
  type: count_distinct
  description: "Number of orders"
  sql: ${order_id} ;;
  drill_fields: [user_details*]

}

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [user_details*]
}

measure: average_sale_price {
  type: average
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [user_details*]
}

與「計數」指標相同,當使用者在探索使用者介面中選取「訂單數」、「總銷售價格」或「平均銷售價格」的值時,Looker 會開啟一個視窗,其中包含「ID」、「城市」、「州」和「國家/地區」欄位的查詢。

如要變更鑽研欄位的任何項目 (例如新增或移除欄位),您只需要更新 user_details 集。

您也可以在檢視區塊的 drill_fields 參數中參照集合,為該檢視區塊中所有尚未在欄位層級指定下鑽欄位的指標定義下鑽欄位。

範例:在「探索」中納入或省略一組欄位

假設您想排除對使用者而言不重要的欄位,簡化使用者的「探索」欄位挑選器。

舉例來說,假設您有一個 users 檢視畫面,其中包含客戶資訊,包括「ID」、「First Name」、「Last Name」、「Email」和「Age」的欄位,以及「City」、「State」、「Country」和「Zip」等位置欄位。users 檢視畫面會加入 orders「探索」:

「訂單」檢視畫面的欄位選擇器包含「訂單」和「使用者」檢視畫面的所有欄位,包括您要省略的欄位。

如果想從使用者的「探索」中排除「名字」、「姓氏」、「電子郵件」、「年齡」和「性別」欄位,該怎麼做?您可以建立名為 user_info 的集合,列出要從「訂單」探索中排除的欄位:

「沒有使用者資料的訂單」探索報表會從探索欄位挑選器中排除「名字」、「姓氏」、「電子郵件」、「年齡」和「性別」欄位。

user_info 集的 LookML 應如下所示:


set: user_info {
  fields: [first_name, last_name, email, age, gender]
}

如要定義標籤為「Orders Without User Data」(沒有使用者資料的訂單) 的「Orders」(訂單) 探索,請將 users 檢視畫面加入 orders 探索。將 LookML 程式碼 fields: [ALL_FIELDS*, -users.user_info*] 新增至 orders「探索」,納入 users 檢視中 user_info 集以外的所有欄位:


explore: orders {
  fields: [ALL_FIELDS*, -users.user_info*]
  label: "Orders Without User Data"
  join: users {
    type: left_outer
    sql_on: ${orders.user_id} = ${users.id} ;;
    relationship: many_to_one
  }
}

由於 user_details 集會從「探索」中排除,語法為 -users.user_details*,位於「探索」的 orders 參數中,因此「沒有使用者資料的訂單」探索中的「訂單」檢視畫面會從「探索」欄位挑選器中省略 users_user.info 集列出的欄位。fields

您可以重複使用 user_info 集,從探索使用者介面中省略這些欄位,以供加入 users 檢視區塊的任何其他探索使用。如要變更 user_info 集的任何項目 (例如新增或移除欄位),只要更新 user_info 集即可。