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

您可以使用 LookML set 參數,讓 LookML 專案更有效率且更容易維護。set 參數可讓您在 fields 參數或鑽研欄位中,將專案中經常重複出現的欄位分組。如果您使用集合來分組重複欄位,則會在模型中建立一個位置,用於維護該組欄位。

本頁提供以下範例,說明如何使用 LookML 集合,讓 LookML 專案更有效率且更易於維護:

食材

事前準備

範例:將相同的細查欄位新增至多個評量

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

選取計數度量的值後,系統會針對 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*]
}

與「計數」評估指標相同,當使用者在「探索」UI 中為「訂單計數」、「總銷售價格」或「平均銷售價格」選取值時,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]
}

如要定義標示為「無使用者資料的訂單」的「訂單」探索,請將 users 檢視畫面與 orders 探索畫面彙整。將 LookML 程式碼 fields: [ALL_FIELDS*, -users.user_info*] 新增至 orders Explore,即可納入所有欄位,除了 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
  }
}

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

您可以重複使用 user_info 集合,針對已加入 users 檢視畫面的任何其他探索,從探索 UI 中省略這些欄位。如果您想變更 user_info 集合的任何內容,例如新增或移除欄位,只需更新 user_info 集合即可。