包括

用法


include: "/views/airports.view"
层次结构
include

- 或 -

include

- 或 -

include
默认值

接受
包含文件名或模式的字符串

定义

include 参数用于指定模型、视图或探索可用的 LookML 文件。如果您想在另一个文件中使用或引用某个 LookML 文件,必须使用 include 参数添加该文件。

您可以在模型文件、视图文件和探索文件中使用 include 参数。include 参数可以引用不同类型的 LookML 文件,具体取决于上下文。

在模型文件中,您可以使用 include 引用以下类型的文件:

在视图文件中,您可以使用 include 引用以下类型的文件:

在探索文件中,您可以使用 include 引用以下类型的文件:

您还可以使用 include 从其他项目中导入文件。如需了解如何包含其他项目中的文件,请参阅从其他项目导入文件文档页面。

使用 include 时,请注意以下几点:

  • 对于非 LookML 文件类型(例如文档文件数据文件),您无需使用 include
  • 包含文件是全有或全无的操作,因此所有被包含文件的信息都会添加到包含文件中。
  • 您可以在一个文件中使用多个 include 参数。
  • 您可以使用 * 通配符来表示具有策略性命名惯例或相同扩展名的文件。例如,您可以使用 "*base.dashboard" 同时匹配和包含 "database.dashboard""crunchbase.dashboard"。您可以使用 "*.dashboard" 来表示所有扩展名为 .dashboard 的文件。
  • 您可以使用 * 通配符来包含目录中的所有文件。例如,您可以指定 include: "/views/users/*.view",以包含 views/users/ 目录中的所有视图文件。如需详细了解如何将通配符与 IDE 文件夹搭配使用,请参阅有关 IDE 文件夹的文档页面。

在模型文件中使用 include

您可以在模型文件中使用 include 参数来包含视图和信息中心Explore

在模型中包含视图和信息中心

使用模型文件中的 include 参数可指定将可供相应模型使用的信息中心和视图文件。如果您想在模型中使用或引用 LookML 文件,必须使用 include 参数添加该文件。

include 参数中,对视图文件使用扩展程序 .view,对信息中心使用扩展程序 .dashboard。您可以省略这些扩展名的 .lkml.lookml 部分。

您可以使用 * 通配符来表示具有策略性命名惯例或相同扩展名的文件。您还可以将 * 通配符与目录路径结合使用,以指定多个文件,如 include 参数页面的通配符示例部分中所述。

例如,您可以在模型文件中使用以下 include 参数:

include: "/**/*.dashboard"
include: "/*/*base.view.lkml"
include: "//e_commerce/views/*.view.lkml"

这些参数将包括以下文件:

  • 项目中任何目录中的所有信息中心文件
  • 项目中任何直接子目录中以 base.view.lkml 结尾的任何视图文件,例如 /views/database.view.lkml/public/crunchbase.view.lkml
  • 导入的项目(名为 e_commerce)的 /views/ 目录中的所有视图文件

如果您的项目包含大量视图文件,或者您的项目使用持久性派生表 (PDT),则应避免在模型中包含所有视图文件。而是应包含如下所示的各个视图文件。以下示例展示了如何包含单个视图文件和项目中的所有信息中心:

include: "/views/order.view"
include: "/views/user.view"
include: "/**/*.dashboard"

在模型中包含模型

您无法包含其他项目中的模型文件。不过,为了在多个项目中重复使用、优化扩展探索,您可以在导入的项目中创建一个单独的探索文件,然后将该探索文件包含在其他项目中。如需了解详情,请参阅在模型中添加 Explore

在模型中添加探索

Explore 通常在模型文件中定义。不过,有时您需要为派生表单独创建一个探索文件,或者跨模型扩展优化探索。

如果您确实有单独的“探索”文件,则需要在模型文件中使用 include 参数来包含该文件。在 include 参数中,使用扩展名 .explore.lkml 表示探索文件。

以下示例是一个包含两个探索的模型文件:

  • aircraft_new 探索,在 explores 文件夹中名为 aircraft_new.explore.lkml 的自有文件中定义。由于该探索是在自己的文件中定义的,因此您必须在 include 参数中指定探索文件的路径。
  • 在模型文件中定义的 accidents 探索。由于它是在模型文件中定义的,因此您无需在模型中使用 include 参数。不过,您确实需要为 accidents 探索所基于的视图提供 include
connection: "faa"

include: "/explores/aircraft_new.explore.lkml"
include: "/views/accidents.view"

explore: accidents {
  view_name: accidents
  from: accidents
}

在模型中包含数据测试

数据测试可以直接在模型文件或视图文件中定义。不过,如果您想在项目的多个位置重复使用数据测试,也可以创建单独的数据测试文件

如果您确实有单独的数据测试文件,则需要在模型文件或视图文件中使用 include 参数,以便运行数据测试。在 include 参数中,为数据测试文件使用扩展名 .lkml

例如,以下是包含数据测试文件的模型文件摘录:

connection: "faa"

include: "/explores/aircraft_new.explore.lkml"
include: "/views/accidents.view"
include: "/tests/data_tests.lkml"

. . .

将数据测试文件纳入模型文件后,您可以运行数据测试,以验证数据测试是否正常运行,并查看模型的逻辑是否通过了测试。

您还可以将数据测试文件包含在视图文件中,如本页面的在视图中包含数据测试部分中所述。

在视图文件中使用 include

在大多数情况下,您无需在视图文件中使用 include。不过,在某些情况下,您确实需要将文件包含在视图文件中:

在视图中包含视图(用于扩展或优化)

您还可以将一个视图文件包含在另一个视图文件中,以扩展优化所包含的视图。

例如,以下是包含 basic_order_fields 视图文件并对其进行扩展的 marketing_order_fields 视图文件:

include: "/views/basic_order_fields.view"
view: marketing_order_fields {
  extends: [basic_order_fields]  # The file that contains the basic_order_fields
}                                # view should be included

在视图中包含探索

在大多数情况下,您无需在视图中添加“探索”。不过,原生派生表是一种特殊情况,因为它们是在具有 explore_source 参数的自有视图文件中定义的。您可以使用 explore_source 参数指定一个探索,并为原生派生表定义所需的列和其他所需的特征。探索通常在模型文件中定义,但对于原生派生表,使用 .explore.lkml 文件扩展名为探索创建单独的文件可能更简洁。如果您创建单独的“探索”文件,则必须将该文件包含在原生派生表视图文件中。

以下示例展示了如何在原生派生表视图文件中使用 include 来指向探索文件:

include: "/explores/order_items.explore.lkml"

view: user_order_facts {
  derived_table: {
    explore_source: order_items {
      column: user_id {field: order_items.user_id}
      column: lifetime_number_of_orders {field: order_items.order_count}
      column: lifetime_customer_value {field: order_items.total_revenue}
      derived_column: average_customer_order {
        sql:  lifetime_customer_value / lifetime_number_of_orders ;;
      }
    }
  }
  dimension: user_id {hidden: yes}
  dimension: lifetime_number_of_orders {type: number}
  dimension: lifetime_customer_value {type: number}
  dimension: average_customer_order {type: number}
}

如需详细了解原生派生表的探索文件,请参阅我们的文档,了解如何使用 include 语句来启用字段引用

在视图中包含数据测试

数据测试可以直接在模型文件或视图文件中定义。不过,如果您想在项目的多个位置重复使用数据测试,也可以创建单独的数据测试文件

如果您确实有单独的数据测试文件,则需要在模型文件或视图文件中使用 include 参数,以便运行数据测试。在 include 参数中,为数据测试文件使用扩展名 .lkml

例如,以下是包含数据测试文件的视图文件的摘录:

include: "/tests/data_tests.lkml"

view: orders {
  sql_table_name: looker.orders ;;

  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }

. . .

将数据测试文件纳入视图文件后,您可以运行数据测试,以验证数据测试是否正常运行,并查看视图的逻辑是否通过了测试。

您还可以将数据测试文件包含在模型文件中,如本页面的在模型中包含数据测试部分中所述。

在探索文件中使用 include

Explore 通常在模型文件中定义。不过,有时您需要为派生表单独创建一个探索文件,或者跨模型扩展优化探索。

如果您有单独的“探索”文件,可以使用 include 参数来包含视图或其他探索

包括“探索”中的视图

如果您有单独的探索文件,则需要包含探索使用的所有视图。使用 .view 文件扩展名表示视图文件。您可以省略文件扩展名的 .lkml 部分。以下是一个探索文件示例,其中包含所用的两个视图:

include: "/views/aircraft.view"
include: "/views/aircraft_types.view"

explore: aircraft {
  join: aircraft_types {
    type: left_outer
    sql_on: ${aircraft.aircraft_type_id} = ${aircraft_types.aircraft_type_id} ;;
    relationship: many_to_one
  }
}

在探索中包含其他探索

您可以在一个探索文件中包含另一个探索文件,例如在扩展优化探索时。使用 include 参数并添加文件扩展名 .explore.lkml

以下是一个示例探索文件,其中包含另一个探索文件,然后扩展了该探索:

include: "/explores/base.explore.lkml"

explore: aircraft_information {
  extends: [aircraft]

include 与 IDE 文件夹搭配使用

当您将 LookML 项目文件整理到文件夹中时,需要在 include 语句中提供文件的路径。

您可以在 include 语句中使用绝对路径或相对路径(如需查看示例,请参阅本页面的路径语法部分),还可以使用通配符 *** 一次性包含多个文件(如需查看示例,请参阅本页面的通配符示例部分)。

例如,假设您的项目中有以下目录结构,其中 views 文件夹的顶级内容如下:

  • 包含视图文件 order_factsorder_itemsorders 文件夹
  • users 文件夹,其中包含视图文件 user_with_age_extensionusersusers_extended
  • 个人视图文件 distribution_centerseventsinventory_itemsproducts

包含“探索”“模型”和“视图”文件夹的目录结构示例。

以下语句将包含 products 视图、order_facts 视图以及 /views/users/ 目录中的所有视图:

include: "/views/products.view"
include: "/views/orders/order_facts.view"
include: "/views/users/*.view"

更改文件的路径时,请务必更新项目中的所有 include 语句,以与文件的新路径保持一致。如果旧的 include 语句不再引用现有文件或文件路径,您可能会看到 LookML 验证警告。此外,您可能会看到引用对象的 LookML 验证错误,因为这些对象的文件路径已更改,导致系统找不到它们。

路径语法

以下是一些可用于包含文件的语法示例:

语法 说明
PATH 从当前文件位置开始的相对路径。
./PATH 从当前文件位置开始的相对路径。此示例指向与上一个示例相同的文件:PATH
../PATH 从当前文件的父目录开始的相对路径。
/PATH 从当前项目的根目录开始的绝对路径。
//PROJECT_NAME/PATH 从名为 PROJECT_NAME导入项目的根目录开始的绝对路径。

使用通配符

对于只需要管理少量文件的项目,您可以在各自的 include 参数中列出每个文件,如下所示:

include: "/dashboards/user_info.dashboard"
include: "/views/users.view"

对于要包含许多文件的项目,您可以使用通配符一次性包含多个文件,从而减少需要编写的 include 参数数量:

在开发过程中,当您需要临时修复 LookML 验证警告时,使用通配符可能特别有用,尤其是在将现有项目整理到 IDE 文件夹中时。不过,在 include 语句中使用通配符时,请考虑以下事项:

将通配符与 IDE 文件夹搭配使用

您可以将通配符与 IDE 文件夹结合使用,以包含 LookML 项目中特定目录中的文件。

例如,以下 include 语句引用了 LookML 项目的 /explores/ 目录中的所有文件:

include: "/explores/*"

针对特定文件类型使用通配符

您可以使用通配符来引用特定类型的所有文件。例如,以下 include 语句引用了 LookML 项目中的所有探索文件:

include: "/**/*.explore.lkml"

如需查看 LookML 文件类型及其文件扩展名的列表,请参阅了解 LookML 项目文件文档页面中的 LookML 项目中的文件类型部分。

将通配符与战略性命名模式搭配使用

您还可以通过策略性地命名文件来使用通配符,从而进一步优化 include 语句。例如,不要像这样命名文件:

/views/apple.view
/views/banana.view
/views/cherry.view
/views/orange.view
/views/celery.view

您可以为文件名添加策略性前缀或后缀,如下所示:

/views/apple.fruit.view
/views/banana.fruit.view
/views/cherry.fruit.view
/views/orange.fruit.view
/views/celery.vegetable.view

然后,使用通配符通过以下方式仅引用 .fruit 后缀:include

include: "/views/*.fruit.view"

通配符示例

以下是一些使用通配符的示例(请注意,您可以将 PATH 替换为上表中的路径语法):

语法 说明
PATH/*.view PATH 中通配符匹配以 .view 结尾的文件。
PATH/*.view.lkml PATH 中匹配以 .view.lkml 结尾的文件。

由于视图文件的扩展名为 .view.lkml,因此此示例指定的文件与上一个示例中的文件 PATH/*.view 相同。.lkml 部分不会显示在 IDE 中,include 语句也不需要 .lkml 部分。不过,您可以使用通配符来利用文件扩展名的这一共同部分。如需查看项目文件扩展名列表,请参阅 LookML 项目文件文档页面。
PATH/*.lkml PATH 中匹配以 .lkml 结尾的文件。

请注意,有多种文件类型都将 .lkml 作为文件扩展名的最后一部分,例如 .view.lkml.model.lkml.lkml 部分不会显示在 IDE 中,include 语句也不需要 .lkml 部分。不过,您可以使用通配符来利用文件扩展名的这一共同部分。如需查看项目文件扩展名列表,请参阅 LookML 项目文件文档页面。
PATH/myfile.* 通配符匹配 PATH 中名为 myfile 且具有任何扩展类型的文件。
PATH/myfile.*.lkml 通配符匹配 PATH 中名为 myfile 且具有任意 .lkml 扩展名类型的文件。
PATH/my*file.view PATH 中,通配符匹配以 my 开头、以 file.view 结尾的文件。
PATH/my*fi*le.view 通配符,用于匹配以 my 开头、后跟一些字符、然后是 fi、一些其他字符、最后以 le.view 结尾的文件(位于 PATH)。
PATH/*/myfile.lkml 文件夹名称通配符(仅匹配一级嵌套)。匹配 PATH 的任何直接子目录中的所有 myfile.lkml 文件。
PATH/**/my_file.view 递归通配符匹配(匹配任意嵌套级别),用于 PATH 和所有子目录中名为 my_file.view.lkml 的所有文件。
PATH/**/*.view 递归通配符,用于匹配 PATH 子目录中所有以 .view.lkml 结尾的文件。
PATH/**/my_folder/myfile.view 递归通配符匹配 PATH 下任意深度的子路径 /my_folder/myfile.view

示例

如需查看在模型文件视图文件探索文件中使用 include 的示例,请参阅前面的部分。

注意事项

包含所有视图文件可能会影响 LookML 验证的性能

如果您的项目包含大量视图文件,并且您将它们全部纳入模型文件中,这可能会影响 LookML 验证器的性能。由于 LookML 验证器会检查模型中包含的所有视图文件,因此您应仅在模型文件的 include 参数中包含所需的视图文件。

考虑为视图文件使用策略性命名规范,以便轻松在模型中包含视图组(请参阅本页上的将通配符与策略性命名模式搭配使用中的示例)。或者,您也可以使用 IDE 文件夹将视图整理到文件夹中。然后,您可以使用 * 通配符来包含单个文件夹中的所有视图,而不是包含项目中的所有视图。如需了解相关信息,请参阅include 与 IDE 文件夹搭配使用部分。

包含所有视图文件可能会使数据库架构变得杂乱无章

对于使用永久性派生表 (PDT) 的项目,您可以在模型文件中添加 PDT 的视图文件。不过,每个包含 PDT 视图文件的模型文件都会在数据库的临时架构中创建 PDT 的副本。如果您有多个模型文件,并且在模型文件中包含所有视图文件,则可能会在数据库临时架构中添加不必要的杂乱内容。因此,请务必仅在需要 PDT 的模型文件中包含 PDT 的视图文件。