扩展(用于“探索”)

本页中提及的 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.categoryorder_items.returned_date

跨模型扩展“探索”

探索通常在模型文件中定义。如果您想扩展探索,只需在同一模型文件中定义扩展探索,如上例所示。

但是,如果您想将探索扩展到多个模型,则必须创建一个单独的探索文件以用作基础文件。在基本文件中定义了基本探索后,您便可以在模型文件中添加探索文件,并在模型文件中扩展探索。

由于您可以将“探索”文件添加到其他“探索”文件中,因此如有需要,您还可以在其他多个“探索”文件中共享基本“探索”文件。

探索文件会监听包含其文件的模型的连接。如果您将模型中的文件配置在不同于 Google 探索文件的父模型连接的模型中,请注意这一点。如果包含模型的连接架构与父模型连接的架构不同,则可能会导致查询错误。

使用元数据查看对象的扩展

您可以在 Looker IDE 中点击 exploreview 参数,然后使用元数据面板查看对象上的所有扩展,或查看扩展的对象。如需了解详情,请参阅 LookML 对象的元数据文档页面。

注意事项

有些参数可累加

在许多情况下,如果扩展对象包含与要扩展的对象相同的参数,扩展对象的值会覆盖扩展对象的参数值。但对于某些参数,扩展可以累加,这意味着扩展对象的值会与扩展对象的值结合使用。

以下“探索”参数可累加

在以下示例中,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 模型本地化文档页面。