本页中提及的
extends
参数是探索的一部分。
extends
也可以用作视图的一部分,如extends
(适用于视图)参数文档页面中所述。
extends
也可以作为 LookML 信息中心的一部分使用,如信息中心参数文档页面所述。
用量
扩展信息: [探索名称, 探索名称, ...]
}
层次结构
extends |
默认值
无接受
方括号,包含以英文逗号分隔的探索名称列表 |
定义
借助 extends
参数,您可以基于另一个探索中的内容和设置,以另一个探索为基础。如果存在任何冲突,扩展的“探索”功能将使用自己的设置,覆盖被扩展的“探索”的设置。如需详细了解 Looker 如何执行此操作,请参阅通过 extends
重复使用代码文档页面。
查看 LookML 优化。
如果您希望拥有多个版本的视图或探索,扩展视图或探索是理想之选。但是,如果您只是想修改视图或探索,而不修改包含它的 LookML 文件,则可以改用优化条件。您还可以在优化条件内使用extends
参数。如需了解详情和用例,请参阅 LookML 优化文档页面。
在扩展“探索”功能时,请务必在“探索”功能中添加要扩展的 view_name
参数。view_name
参数定义了探索所依据的视图。其默认名称为“探索”。如果基础探索未指定 view_name
,则默认为探索名称。但这并不适用于其他扩展基本“探索”功能的“探索”,因此我们会收到“未知视图”错误。为了让 Looker 使用正确的视图文件,我们需要使用 view_name
参数指定它。而且,在任何扩展版本的探索中都需要用到此变量,因此最佳做法是将其添加到基本探索中,这样每当探索扩展时,它都会始终引用。
如果您的基本“探索”功能尚无 view_name
参数,您只需添加 view_name
参数,并指定与探索名称相同的值。
您可能还需要在基础中使用 view_label
参数并扩展“探索”。view_label
参数用于确定将字段的字段分组到字段选择器中的标签(如需查看示例,请参阅 view_label
(适用于探索)参数文档页面)。如果您没有为基本功能指定 view_label
并扩展“探索”功能,那么这两者都将使用基本“探索”功能中的“探索”名称。
示例
下面是一个在我们的模型文件中定义的“探索”示例:
explore: orders {
view_name: orders
view_label: "Orders"
# The normal contents of the Explore follow
}
在这里,我们添加了一个新的探索,扩展了上面定义的 orders
探索:
explore: name_of_the_new_explore {
extends: [orders]
view_label: "Order Information"
# The additional things you want to add or change
# in the new Explore
}
如果您要扩展基于扩展视图的“探索”,则还需要使用 from
参数。将 from
添加到扩展中。为其指定扩展的视图名称。
explore: new_explore {
extends: [orders]
from: extended_orders_view
#The normal contents of the Explore follow
}
使用 extends
限制不同用户的字段
扩展“探索”功能的一种非常实用的用例是仅向特定用户显示“探索”字段的子集。例如,假设您有一个 products
探索,其中包含联接表中的所有可用字段:
explore: products {
view_name: products
from: products
join: inventory_items {
type: left_outer
sql_on: ${products.id}=${inventory_items.product_id} ;;
relationship: many_to_one
}
join: order_items {
type: left_outer
sql_on: ${order_items.inventory_item_id}=${inventory_items.id} ;;
relationship: one_to_one
}
}
如果您的某个团队只需要查看商品类别和退货,您可以扩展 products
“探索”,并使用 fields
参数来指定仅包含“商品类别”和“退货”字段:
explore: products_extended {
extends: [products]
fields: [products.category,order_items.returned_date]
}
products_extended
“探索”将仅显示以下两个字段:products.category
和 order_items.returned_date
。
跨模型扩展“探索”
探索通常在模型文件中定义。如果您想扩展探索,只需在同一模型文件中定义扩展探索,如上例所示。
但是,如果您想将探索扩展到多个模型,则必须创建一个单独的探索文件以用作基础文件。在基本文件中定义了基本探索后,您便可以在模型文件中添加探索文件,并在模型文件中扩展探索。
由于您可以将“探索”文件添加到其他“探索”文件中,因此如有需要,您还可以在其他多个“探索”文件中共享基本“探索”文件。
探索文件会监听包含其文件的模型的连接。如果您将模型中的文件配置在不同于 Google 探索文件的父模型连接的模型中,请注意这一点。如果包含模型的连接架构与父模型连接的架构不同,则可能会导致查询错误。
使用元数据查看对象的扩展
您可以在 Looker IDE 中点击 explore
或 view
参数,然后使用元数据面板查看对象上的所有扩展,或查看扩展的对象。如需了解详情,请参阅 LookML 对象的元数据文档页面。
注意事项
有些参数可累加
在许多情况下,如果扩展对象包含与要扩展的对象相同的参数,扩展对象的值会覆盖扩展对象的参数值。但对于某些参数,扩展可以累加,这意味着扩展对象的值会与扩展对象的值结合使用。
以下“探索”参数可累加:
access_filter
aggregate_table
extends
(您可将多个extends
串联在一起)join
query
在以下示例中,aircraft_base
探索使用 join
参数将 aircraft
视图与 aircraft_types
视图联接起来:
explore: aircraft {
view_name: aircraft
label: "Aircraft"
join: aircraft_types {
type: left_outer
sql_on: ${aircraft.aircraft_type_id} = ${aircraft_types.aircraft_type_id} ;;
relationship: many_to_one
}
}
aircraft_extended
探索扩展了 aircraft_base
探索。此外,aircraft_extended
探索还包含 join
参数,该参数会加入 aircraft_engine_types
视图中:
explore: aircraft_extended {
extends: [aircraft]
label: "Aircraft Extended"
join: aircraft_engine_types {
type: left_outer
sql_on: ${aircraft.aircraft_engine_type_id} = ${aircraft_engine_types.aircraft_engine_type_id} ;;
relationship: many_to_one
}
}
join
参数是累加的,因此生成的“探索”将显示基本“探索”中联接的视图,以及联接到扩展“探索”中的视图。在本例中,aircraft_extended
探索包含 aircraft
视图、aircraft_types
视图和 aircraft_engine_types
视图:
支持本地化的项目
扩展对象时,请注意本地化规则也适用于您的扩展。如果要扩展对象,然后定义新的标签或说明,则应在项目的语言区域字符串文件中提供本地化定义。如需了解详情,请参阅将 LookML 模型本地化文档页面。