LookML 术语和概念

本页面定义了以下核心术语和概念,您在 LookML 开发过程中可能会经常遇到这些术语和概念:

本页面未介绍 Looks用户定义的信息中心,因为用户是在不使用任何 LookML 的情况下创建的。但是,其查询依赖于本页面介绍的底层 LookML 元素。

如需查看 Looker 中使用的术语和定义的完整列表,请参阅 Looker 术语表。如需全面了解可在 LookML 项目中使用的 LookML 参数,请参阅 LookML 快速参考页面。

如需了解 Looker 和 Looker Studio 中相似术语和概念之间的细微差别,请参阅 Looker 和 Looker Studio 中通用的术语和概念文档页面。

LookML 项目

在 Looker 中,项目是文件集合,描述用于执行 SQL 查询的对象、数据库连接和界面元素。从最基本的层面来说,这些文件描述了数据库表之间的相互关系,以及 Looker 应如何解读这些表。这些文件可能还包含 LookML 参数,用于定义或更改 Looker 界面中显示的选项。每个 LookML 项目都位于自己的 Git 代码库中,以便进行版本控制

将 Looker 连接到数据库后,您可以指定要为 Looker 项目使用的 connection(连接)。

您可以通过 Looker 中的 Develop 菜单访问项目(如需了解详情和其他选项,请参阅访问项目文件)。

如需了解如何创建新项目,请参阅创建新的 LookML 项目;如需了解如何访问和更改现有 LookML 项目,请参阅访问和修改项目信息

项目的组成部分

LookML 项目可以包含模型、视图和 LookML 信息中心,其中每个信息中心均由其他 LookML 元素组成。

如图所示,以下是 LookML 项目中一些较为常见的文件类型:

  • 模型包含要使用哪些表以及如何将这些表联接在一起的信息。在这里,您通常会定义模型、其探索和联接。
  • 视图包含有关如何访问或计算每个表(或多个联接表)中的信息的信息。在这里,您通常会定义视图、其维度和测量以及其字段集。
  • 探索通常在模型文件中定义,但有时您需要单独的探索文件来创建派生表,或者跨模型扩展优化探索。
  • 清单文件可以包含从其他项目中导入的文件或项目的本地化设置的说明。

除了模型文件、视图文件、探索文件和清单文件外,项目还可以包含与内置信息中心、文档、本地化等内容相关的其他类型的文件。如需详细了解这些类型的文件以及您可以在 LookML 项目中使用的其他类型的文件,请参阅 LookML 项目文件文档页面。

这些文件共同构成一个项目。如果您使用 Git 进行版本控制,则每个项目通常都有自己的 Git 代码库进行备份。

LookML 项目和文件来自哪里?

创建 LookML 文件的最常用方法是从数据库生成 LookML 项目。您还可以创建空白项目并手动创建其 LookML 文件,也可以通过克隆现有 Git 代码库来创建项目

当您从数据库生成新项目时,Looker 会创建一组基准文件,您可以将其用作构建项目的模板:

  • 多个视图文件,每个数据库表对应一个文件。
  • 一个模型文件。模型文件会为每个视图声明一个 Explore。每个探索声明都包含 join 逻辑,用于联接 Looker 可以确定与探索相关的任何视图。

在这里,您可以通过移除不需要的视图和“探索”以及添加自定义维度和测量值来自定义项目。

主要的 LookML 结构

“项目的各个部分”图所示,项目通常包含一个或多个模型文件,其中包含用于定义模型及其探索和联接的参数。此外,项目通常包含一个或多个视图文件,每个视图文件都包含用于定义该视图及其字段(包括维度和测量指标)和字段集的参数。该项目还可以包含项目清单文件,以便您配置项目级设置。本部分介绍了这些主要结构。

模型

模型是进入数据库的自定义门户,旨在为特定业务用户提供直观的数据探索体验。在单个 LookML 项目中,同一数据库连接可以有多个模型。每个模型都可以向不同的用户显示不同的数据。例如,销售人员需要的数据与公司高管不同,因此您可能需要开发两个模型,以便提供适合每位用户的数据库视图。

模型指定与单个数据库的“连接”。开发者还可以在模型文件内定义模型的探索。默认情况下,“探索”会按照定义它们的模型名称进行整理。您的用户会看到探索菜单中列出的模型。

如需详细了解模型文件(包括模型文件的结构和一般语法),请参阅 LookML 项目中的文件类型文档页面。

如需详细了解可在模型文件中使用的 LookML 参数,请参阅模型参数文档页面。

查看

视图声明定义了一系列字段(维度或测量)及其与底层表或派生表之间的关联。在 LookML 中,视图通常引用底层数据库表,但也可以表示派生表

视图可以联接到其他视图。视图之间的关系通常在模型文件中的 Explore 声明中定义。

默认情况下,视图名称会显示在“探索数据”表格中维度和测量名称的开头。这种命名惯例可清晰地表明字段所属的视图。在以下示例中,视图名称 Orders(订单)和 Users(用户)列在数据表中字段的名称前面:

示例查询的数据表,其中选择了“订单创建日期”“用户 ID”和“订单数”字段。

如需详细了解视图文件(包括视图文件的结构和常规语法),请参阅 LookML 项目中的文件类型文档。

如需详细了解可在视图文件中使用的 LookML 参数,请参阅视图参数文档页面。

探索

探索是一种可供用户查询的视图。您可以将“探索”视为查询的起点,或者用 SQL 术语来说,就是 SQL 语句中的 FROM。并非所有浏览都是探索,因为并非所有浏览都描述了感兴趣的实体。例如,与州名对照表对应的 States 视图不一定要使用“探索”,因为商家用户永远不需要直接查询该视图。另一方面,企业用户可能希望能够查询订单视图,因此为订单定义“探索”页面很有意义。如需了解用户如何与探索互动以查询您的数据,请参阅在 Looker 中查看和与探索互动文档页面。

在 Looker 中,用户可以在探索菜单中看到列出的探索。探索列在所属模型的名称下方。

按照惯例,探索在模型文件中使用 explore 参数声明。在下面的模型文件示例中,电子商务数据库的 orders“Explore”是在模型文件中定义的。explore 声明中引用的视图 orderscustomers 在其他位置(各自的视图文件中)定义。

connection: order_database
include: "filename_pattern"

explore: orders {
  join: customers {
    sql_on: ${orders.customer_id} = ${customers.id} ;;
  }
}

在此示例中,connection 参数用于指定模型的数据库连接,而 include 参数用于指定可供模型引用的文件。

此示例中的 explore 声明还指定了视图之间的联接关系。如需详细了解 join 声明,请参阅本页面中有关联接的部分。如需详细了解可与 join 参数搭配使用的 LookML 参数,请访问联接参数文档页面。

维度和衡量字段

视图包含字段,主要是维度和测量,它们是 Looker 查询的基本构建块。

在 Looker 中,维度是可分组的字段,可用于过滤查询结果。可以是下列任意一种:

  • 与底层表中的列直接关联的属性
  • 事实或数值
  • 根据单行中其他字段的值计算得出的派生值

在 Looker 中,维度始终显示在 Looker 生成的 SQL 的 GROUP BY 子句中。

例如,“产品”视图的维度可能包括产品名称、产品型号、产品颜色、产品价格、产品创建日期和产品终止日期。

测量是使用 SQL 聚合函数的字段,例如 COUNTSUMAVGMINMAX。基于其他衡量值计算的任何字段也是衡量指标。测量可用于过滤已分组的值。例如,针对“销售”数据视图的衡量指标可能包含售出商品总数(计数)、总售价(总和)和平均售价(平均值)。

字段的行为和预期值取决于其声明的类型,例如 stringnumbertime。对于测量,类型包括汇总函数,例如 sumpercent_of_previous。如需了解详情,请参阅维度类型测量类型

在 Looker 中,字段列在探索页面左侧的字段选择器中。您可以展开字段选择器中的某个视图,以显示可从该视图中查询的字段列表。

按照惯例,字段会声明为其所属的视图的一部分,并存储在视图文件中。以下示例展示了多个维度和测量声明。请注意,在不使用完全限定范围的 SQL 列名称的情况下,使用了替代运算符 ($) 来引用字段。

以下是一些维度和测量声明示例:

view: orders {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: customer_id {
    sql: ${TABLE}.customer_id ;;
  }
  dimension: amount {
    type: number
    value_format: "0.00"
    sql: ${TABLE}.amount ;;
  }
  dimension_group: created {
    type: time
    timeframes: [date, week]
    sql: ${TABLE}.created_at ;;
  }
  measure: count {
    type: count           # creates sql COUNT(orders.id)
    sql: ${id} ;;
  }
  measure: total_amount {
    type: sum             # creates sql SUM(orders.amount)
    sql: ${amount} ;;
  }
}

您还可以定义 dimension_group(用于一次性创建多个与时间相关的维度)和 filter 字段(具有各种高级用例,例如基于模板的过滤条件)。

如需详细了解如何声明字段以及可应用于字段的各种设置,请参阅字段参数文档页面。

联接

explore 声明中,每个 join 声明都指定一个可联接到探索的视图。如果用户创建的查询包含多个视图中的字段,Looker 会自动生成 SQL 联接逻辑来正确引入所有字段。

以下是 explore 声明中的联接示例:

# file: ecommercestore.model.lookml

connection: order_database
include: "filename_pattern"   # include all the views

explore: orders {
  join: customers {
    sql_on: ${orders.customer_id} = ${customers.id} ;;
  }
}

如需了解详情,请访问在 LookML 中使用联接文档页面。

项目清单文件

您的项目可能包含项目清单文件,该文件用于项目级设置,例如指定要导入当前项目的其他项目、定义 LookML 常量、指定模型本地化设置,以及向项目添加扩展自定义可视化图表

每个项目只能有一个清单文件。该文件必须命名为 manifest.lkml,并位于 Git 代码库的根目录下。使用 IDE 中的文件夹时,请确保 manifest.lkml 文件保留在项目目录结构的根级别。

如需从其他项目导入 LookML 文件,请使用项目清单文件指定当前项目的名称以及任何外部项目的位置,这些项目可本地或远程存储。例如:

# This project
project_name: "my_project"

# The project to import
local_dependency: {
  project: "my_other_project"
}

remote_dependency: ga_360_block {
  url: "https://github.com/llooker/google_ga360"
  ref: "4be130a28f3776c2bf67a9acc637e65c11231bcc"
}

在项目清单文件中定义外部项目后,您可以使用模型文件中的 include 参数将这些外部项目中的文件添加到您的当前项目中。例如:

include: "//my_other_project/imported_view.view"
include: "//ga_360_block/*.view"

如需了解详情,请参阅从其他项目导入文件文档页面。

如需向模型添加本地化内容,请使用项目清单文件指定默认的本地化设置。例如:

localization_settings: {
  default_locale: en
  localization_level: permissive
}

指定默认的本地化设置是模型本地化的一个步骤。如需了解详情,请参阅本地化 LookML 模型文档页面。

集合

在 Looker 中,是一个列表,用于定义一组一起使用的字段。通常,集用于指定在用户展开细目查看数据后要显示的字段。深入分析集是按字段指定的,因此您可以完全控制当用户点击表格或信息中心中的值时,系统应显示哪些数据。集还可用作安全功能,用于定义可供特定用户查看的一组字段。以下示例展示了视图 order_items 中的 set 声明,该声明定义用于列出所购商品相关详细信息的字段。请注意,该集合通过指定范围来引用其他视图中的字段。

set: order_items_stats_set {
  fields: [
    id,  # scope defaults to order_items view
    orders.created_date,  # scope is "orders" view
    orders.id,
    users.name,
    users.history,  # show all products this user has purchased
    products.item_name,
    products.brand,
    products.category,
    total_sale_price
  ]
}

如需了解集的完整用法详情,请参阅 set 参数文档页面。

展开细目

在 Looker 中,您可以配置字段,以便用户进一步深入挖掘数据。钻取功能适用于查询结果表格和信息中心。执行深入探究操作会启动受您点击的值限制的新查询。

维度和指标的展开行为有所不同:

  • 在展开某个维度时,新查询会过滤深入分析的值。例如,如果您在按日期查询客户订单的查询中点击特定日期,则新查询将仅显示该特定日期的订单。
  • 在某个指标上展开时,新查询将显示对该指标有贡献的数据集。例如,展开计数时,新查询会显示用于计算该计数的行。按最大值、最小值和平均值进行深入分析时,深入分析仍会显示促成该测量的所有行。这意味着,例如,按最大值展开会显示用于计算最大值的所有行,而不仅仅是包含最大值的单个行。

要为新钻研查询显示的字段可以通过进行定义,也可以通过 drill_fields 参数(适用于字段)drill_fields 参数(适用于视图)进行定义。

派生表

派生表是一种查询,其结果的使用方式就像是数据库中的实际表一样。派生表是通过在 view 声明中使用 derived_table 参数创建的。Looker 访问派生表,就像这些实体表具有自己的一组列一样。派生表作为自己的视图公开,并采用与传统视图相同的方式定义尺寸和测量。与任何其他视图一样,派生表的视图可以被查询并联接到其他视图。

派生表还可以定义为永久性派生表 (PDT),是指写入数据库的临时架构的派生表,并按照您使用持久策略指定的计划自动重新生成。

如需了解详情,请参阅 Looker 中的派生表文档页面。

数据库连接

LookML 项目的另一个重要元素是 Looker 用于对数据库运行查询的数据库连接。Looker 管理员使用“连接”页面配置数据库连接,LookML 开发者使用模型文件中的 connection 参数指定用于模型的连接。如果您从数据库生成 LookML 项目,Looker 会自动在模型文件中填充 connection 参数。

区分大小写

LookML 区分大小写,因此在引用 LookML 元素时,请务必区分大小写。如果您引用了不存在的元素,Looker 会提醒您。

例如,假设您有一个名为 e_flights_pdt 的探索,而 LookML 开发者使用不正确的大写字母 (e_FLIGHTS_pdt) 来引用该探索。在此示例中,Looker IDE 会显示一条警告,指出“探索”e_FLIGHTS_pdt 不存在。此外,IDE 还会建议现有探索的名称,即 e_flights_pdt

不过,如果您的项目同时包含 e_FLIGHTS_pdte_flights_pdt,Looker IDE 将无法进行更正,因此您必须确定自己要使用哪个版本。通常,在为 LookML 对象命名时,最好使用小写字母。

IDE 文件夹名称也区分大小写。无论何时指定文件路径,您都必须与文件夹名称的大小写保持一致。例如,如果您有一个名为 Views 的文件夹,则必须在 include 参数中也使用这种大小写形式。同样,如果您的大小写与项目中的现有文件夹不匹配,Looker IDE 会再次指出错误:

Looker IDE 会显示一条警告,指出包含项与任何文件都不匹配。