为了使 LookML 项目更高效且更易于维护,一种方法是使用 LookML set
参数。借助 set
参数,您可以在 fields
参数或深入分析字段中对在整个项目中经常重复的字段进行分组。如果您使用集合对重复字段进行分组,则可以在模型内创建一个位置来维护这组字段。
本页面包含以下示例,了解如何使用 LookML 集使 LookML 项目更高效且更易于维护:
- 向多个测量添加相同的深入分析字段:定义深入分析字段,指定用户在深入分析汇总时通常希望查看的详细信息。
- 在探索中包含或省略一组字段:为用户自定义“探索”体验,并简化用户可以在字段选择器中选择的字段列表。
所需要素
- LookML
set
参数 - LookML
fields
参数(适用于探索) - LookML
drill_fields
参数(适用于字段) - LookML
drill_fields
参数(适用于视图)
前提条件
示例:向多个测量添加相同的深入分析字段
假设您希望用户可以在任何报告中查看销售指标的地方展开细目查看更精细的用户详细信息,这样一来,在“探索”界面中为“数量”测量值选择一个值,系统就会打开针对字段“ID”“城市”“州”和“国家/地区”的查询:
您可以创建一个名为 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 会打开一个窗口,其中包含对 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
探索,以包含除 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*
语法 -users.user_details*
从探索中排除 user_details
集,因此没有用户数据的订单探索中的订单视图会省略“探索”字段选择器的 users_user.info
集中列出的字段。
对于与 users
视图联接的任何其他探索,您可以重复使用 user_info
集,以在“探索”界面中省略这些字段。如果您想更改有关 user_info
集的任何内容(例如添加或移除字段),只需更新 user_info
集即可。