一种可提高 LookML 项目效率并使其更易于维护的方法是使用 LookML set
参数。借助 set
参数,您可以将项目中可能经常重复的字段分组到 fields
参数或下钻字段中。如果您使用集合来对重复字段进行分组,则可以在模型中创建一个位置来维护该字段组。
本页包含以下示例,展示了如何使用 LookML 集来提高 LookML 项目的效率和可维护性:
- 为多个指标添加相同的下钻字段:为用户在下钻到汇总数据时通常想要查看的详细信息定义下钻字段。
- 在探索中包含或省略一组字段:为用户自定义探索体验,并简化用户可在字段选择器中选择的字段列表。
所需材料
- LookML
set
参数 - LookML
fields
参数(适用于探索) - LookML
drill_fields
参数(适用于字段) - LookML
drill_fields
参数(适用于视图)
前提条件
示例:向多个指标添加相同的下钻字段
假设您希望用户能够在探索、Look 或信息中心中看到销售指标时,能够向下钻取以查看更精细的用户详情,因此在探索界面中选择数量度量的值时,系统会针对标识符、城市、州/省和国家/地区字段打开查询:
您可以创建一个名为 user_details
的集,其中包含 id
、city
、state
和 country
字段,然后在多个指标中引用这些字段,以便用户深入分析:
set: user_details {
fields: [id, city, state, country]
}
user_details
集可用于为 count
指标定义下钻字段:
measure: count {
type: count
drill_fields: [user_details*]
}
在此示例中,语法 [set_name*]
用于指定当您深入分析数量指标时,user_details
中的字段将显示在查询结果中。
然后,您可以重复使用此集合来创建其他下钻字段。例如,您可以将 LookML 代码 drill_fields: [user_details*]
添加到 order_count
、total_sale_price
和 average_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 会打开一个窗口,其中包含针对身份证号、城市、州/省和国家/地区字段的查询。
如果您想更改有关下钻字段的任何内容(例如添加或移除字段),只需更新 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
}
}
由于 user_details
集通过 orders
探索的 fields
参数中的语法 -users.user_details*
从探索中排除,因此不含用户数据的订单探索中的订单视图会从探索字段选择器中省略 users_user.info
集中列出的字段。
您可以重复使用该 user_info
设置,以便从 users
视图联接到的任何其他探索的探索界面中省略这些字段。如果您想更改 user_info
集的任何内容(例如添加或移除字段),只需更新 user_info
集即可。