extends(适用于视图)

此页面指的是属于视图extends 参数。

extends 也可以用作探索的一部分,如 extends(适用于探索)参数文档页面中所述。

extends 还可以用作 LookML 信息中心的一部分,如信息中心参数文档页面中所述。

用法

view: view_name {
  extends: [view_name, view_name, ...]
}
层次结构
extends
默认值

接受
包含以英文逗号分隔的视图名称列表的方括号

定义

借助 extends 参数,您可以利用另一个视图文件中的内容和设置,将该视图文件作为起点。如果存在任何冲突,扩展视图将使用自己的设置,从而覆盖被扩展视图的设置。如需详细了解 Looker 如何实现此目的,请参阅使用 extends 重用代码

了解 LookML 细化。

如果您希望拥有视图或探索的多版本,那么扩展视图或探索是理想的选择。不过,如果您的目标只是修改视图或探索,而无需修改包含该视图或探索的 LookML 文件,则不妨改用优化。您还可以在优化中使用 extends 参数。如需了解详情和使用情形,请参阅 LookML 细化文档页面。

在扩展视图时,请务必在要扩展的视图上使用 sql_table_name 参数(如果尚未添加)。sql_table_name 参数用于定义视图将查询的数据库中的表。对于任何视图,默认值都是视图的名称。因此,如果您尚未使用 sql_table_name,只需为其指定与视图名称相同的值即可。

同样重要的是,在新的视图文件中,我们使用 include 参数来指向要扩展的视图的文件名。

避免扩展基于永久性派生表 (PDT) 的视图。每次扩展 PDT 都会在数据库中创建该表的新副本。在这种情况下,您可能需要改用 LookML 细化。如需了解详情和使用情形,请参阅 LookML 细化文档页面。

示例

以下是一个可以扩展的视图文件示例。视图名为 looker_events,视图的文件名为 events.view

文件:events.view

view: looker_events {
  sql_table_name: looker_db.events ;;
  # The normal contents of the view follow
}

现在,我们将创建一个新的视图文件,并定义一个扩展 looker_events 视图的视图。在新文件中,我们必须使用 include 参数来指向要扩展的视图的文件名:

文件:new_events.view

include: "events.view"
view: name_of_the_new_view {
  extends: [looker_events]

  measure: additional_measure {
    type: count
  }
  # Additional things you want to add or change
}

然后,我们添加了一个新指标,该指标将显示在我们的新视图中,此外,我们扩展的 looker_events 视图中定义的所有维度和指标也会显示在新视图中。

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

您可以在 Looker IDE 中点击 exploreview 参数,然后使用元数据面板查看对象的任何扩展,或查看对象扩展了哪些内容。如需了解相关信息,请参阅 LookML 对象的元数据文档页面。

注意事项

某些形参是累加的

在许多情况下,如果扩展对象包含与被扩展对象相同的参数,则扩展对象的值会替换被扩展对象的参数值

但对于某些参数,扩展可以是相加的,这意味着扩展对象中的值会与被扩展对象中的值结合使用。

以下参数是累加的:

在以下示例中,carriers 视图具有一个包含 link 参数的 name 维度:

view: carriers {
  sql_table_name: flightstats.carriers ;;

  dimension: name {
    sql: ${TABLE}.name ;;
    type: string
    link: {
      label: "Google {{ value }}"
      url: "http://www.google.com/search?q={{ value }}"
      icon_url: "http://google.com/favicon.ico"
    }
  }
}

以下是扩展 carriers 视图的 carriers_extended 视图。carriers_extended 视图还具有 link 参数中设置不同的 name 维度:


include: "/views/carriers.view.lkml"

view: carriers_extended {
  extends: [carriers]

  dimension: name {
    sql: ${TABLE}.name ;;
    type: string
    link: {
      label: "Dashboard for {{ value }}"
      url: "https://docsexamples.dev.looker.com/dashboards/307?Carrier={{ value }}"
      icon_url: "https://www.looker.com/favicon.ico"
    }
  }
}

carriers_extended 视图中,两个 link 参数是相加的,因此 name 维度将包含这两个链接。

包含本地化的项目

扩展对象时,请注意本地化规则也适用于您的扩展。如果您要扩展某个对象,然后定义新的标签或说明,则应在项目的语言区域字符串文件中提供本地化定义。如需了解详情,请参阅本地化 LookML 模型文档页面。