LookML 术语和概念

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

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

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

LookML 项目

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

将 Looker 连接到数据库后,您可以指定要用于 Looker 项目的数据库连接

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

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

项目的组成部分

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

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

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

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

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

LookML 项目和文件来自哪里?

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

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

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

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

主要 LookML 结构

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

模型

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

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

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

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

查看

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

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

默认情况下,视图名称会显示在“探索”数据表中维度和测量名称的开头。此命名惯例明确了字段属于哪个视图。在以下示例中,视图名称 OrdersUsers 列在数据表中字段的名称前面:

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

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

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

探索

探索是用户可以查询的视图。您可以将“探索”视为查询的起点,或者(用 SQL 术语来说,就是 SQL 语句中的 FROM)。并非所有浏览次数都是探索次数,因为并非所有浏览次数都代表感兴趣的实体。例如,如果一个 States 视图与州名称对照表对应,则不一定能使用“探索”,因为商家用户永远都不需要直接查询。另一方面,商家用户可能希望通过某种方式查询订单视图,因此为订单定义“探索”是可行的。请参阅在 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: 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 会显示一条警告,指出“包含”与任何文件都不匹配。