LookML 术语和概念

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

本页未介绍外观用户定义的信息中心,因为用户无需使用任何 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 项目文件文档页面。

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

LookML 项目和文件来自哪里?

创建 LookML 文件的最常用方法是从数据库生成 LookML 项目。您还可以创建一个空白项目,并手动创建其 LookML 文件。

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

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

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

主要的 LookML 结构

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

模型

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

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

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

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

查看

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

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

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

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

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

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

探索

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

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

按照惯例,在模型文件中使用 explore 参数声明探索。在以下模型文件示例中,orders“探索”(适用于电子商务数据库) 是在模型文件中定义的。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 会通过指定作用域来引用其他视图中的字段。

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 会显示一条警告,指出包含项与任何文件都不匹配。