LookML 是 Looker 建模语言的简称,是 Looker 中用于创建语义数据模型的语言。您可以使用 LookML 描述 SQL 数据库中的维度、聚合、计算和数据关系。Looker 使用以 LookML 编写的模型来构建针对特定数据库的 SQL 查询。
LookML 是一种依赖性语言(如 make),而不是命令式语言(如 C 或 Ruby)。LookML 提供预定义的数据类型和语法,用于数据建模。您无需具备编程语言方面的经验即可理解 LookML。LookML 独立于特定的 SQL 方言,并且封装了 SQL 表达式以支持任何 SQL 实现。
对于数据分析师,LookML 提倡 DRY(“不要重复自己”)风格,这意味着您只需在一个位置编写一次 SQL 表达式,Looker 就会重复使用该代码来生成临时 SQL 查询。然后,业务用户可以使用这些结果在 Looker 中构建复杂的查询,只需专注于所需的内容,而无需考虑 SQL 结构的复杂性。
LookML 项目
LookML 在项目中定义。LookML 项目是一个文件集合,至少包含模型文件和视图文件,还可以包含其他类型的文件,这些文件通常通过 Git 代码库一起进行版本控制。模型文件包含有关项目将使用哪些表以及应如何联接这些表的信息。视图文件描述了如何计算每个表(或多个表,如果联接允许这样做)的相关信息。
LookML 将结构与内容分离,因此查询结构(表的联接方式)独立于查询内容(要访问的列、派生字段、要计算的聚合函数和要应用的过滤表达式)。
Looker 查询基于 LookML 项目文件。数据分析师使用 LookML 创建和维护数据模型,这些模型定义了所分析数据的数据结构和业务规则。Looker SQL 生成器会将 LookML 转换为 SQL,从而让业务用户无需编写任何 LookML 或 SQL 即可进行查询。
业务用户可以使用 Looker 查询构建器或探索界面,根据 Looker 分析师定义的数据模型创建查询。用户可以选择维度、指标和过滤条件来创建基于自身问题的自定义查询,并生成自己的数据洞见。
当用户创建查询时,该查询会发送到 Looker SQL 生成器,后者会将查询转换为 SQL。系统针对数据库执行 SQL 查询,然后 Looker 会在“探索”界面中将格式化后的结果返回给用户。然后,用户可以直观呈现结果并生成数据洞见。
如需详细了解项目中的基本 LookML 元素及其相互关系,请参阅 LookML 术语和概念。
用户看到的内容
项目的设置方式及其文件的具体内容决定了用户看到的内容以及他们与 Looker 的互动方式。
- 左侧导航面板中的“探索”面板按模型名称进行整理。每个模型名称下方都有一个在该模型中定义的可用 Explore 列表。
- 用户可以搜索特定的探索。
开发者可以为探索定义说明,用户只需将鼠标悬停在探索菜单中的探索名称上即可查看这些说明。
字段选择器窗格按视图名称进行整理。每个视图名称下方都会显示相应视图中包含的表中的可用字段列表。大多数视图都会显示维度和测量。此示例从视图文件中定义的退回日期维度组中选择月份维度。
用户可以选择多个用于查询的指标。
用户可以在字段选择器窗格中应用过滤条件和透视等选项。
用户可以优化查询字词。
用户可以选择要应用于查询结果的可视化图表类型。
运行此探索会生成一个 SQL 查询,该查询会返回一个数据表以及过去一年内所返回订单的总销售价格和总毛利润的可视化图表。
代码示例
以下代码示例展示了一个电子商务商店的最小 LookML 项目,该项目包含一个模型文件 (ecommercestore.model.lkml
) 和两个视图文件 (orders.view.lkml
和 customers.view.lkml
):
######################################
# FILE: ecommercestore.model.lkml #
# Define the explores and join logic #
######################################
connection: order_database
include: "*.view.lkml"
explore: orders {
join: customers {
sql_on: ${orders.customer_id} = ${customers.id} ;;
}
}
##########################################################
# FILE: orders.view.lkml #
# Define the dimensions and measures for the ORDERS view #
##########################################################
view: orders {
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension: customer_id { # field: orders.customer_id
sql: ${TABLE}.customer_id ;;
}
dimension: amount { # field: orders.amount
type: number
value_format: "0.00"
sql: ${TABLE}.amount ;;
}
dimension_group: created { # generates fields:
type: time # orders.created_time, orders.created_date
timeframes: [time, date, week, month] # orders.created_week, orders.created_month
sql: ${TABLE}.created_at ;;
}
measure: count { # field: orders.count
type: count # creates a sql COUNT(*)
drill_fields: [drill_set*] # list of fields to show when someone clicks 'ORDERS Count'
}
measure: total_amount {
type: sum
sql: ${amount} ;;
}
set: drill_set {
fields: [id, created_time, customers.name, amount]
}
}
#############################################################
# FILE: customers.view.lkml #
# Define the dimensions and measures for the CUSTOMERS view #
#############################################################
view: customers {
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension: city { # field: customers.city
sql: ${TABLE}.city ;;
}
dimension: state { # field: customers.state
sql: ${TABLE}.state ;;
}
dimension: name {
sql: CONCAT(${TABLE}.firstname, " ", ${TABLE}.lastname) ;;
}
measure: count { # field: customers.count
type: count # creates a sql COUNT(*)
drill_fields: [drill_set*] # fields to show when someone clicks 'CUSTOMERS Count'
}
set: drill_set { # set: customers.drill_set
fields: [id, state, orders.count] # list of fields to show when someone clicks 'CUSTOMERS Count'
}
}
其他资源
如果您是 LookML 开发新手,不妨考虑使用以下部分中介绍的资源来加快学习速度:
访问 Looker 的学习环境
不妨查看 Google Cloud Skills Boost 上的课程。
了解如何使用 Looker 查询和探索数据
了解如何在 Looker 中探索数据,有助于您在 LookML 中对数据进行建模。如果您不熟悉如何使用 Looker 查询、过滤和深入分析数据,建议您参考以下资源:
- 首先学习检索数据并依据数据绘制图表教程。每个页面底部的链接将引导您了解一系列最重要的 Looker 功能。
- “在 Looker 中分析和直观呈现数据”技能提升任务将带您了解探索的基础知识。
在深入了解 LookML 之前,先复习一下 SQL 基础知识
编写 LookML 需要了解 SQL 查询。您无需是 SQL 专家,即使是初学者也能创建强大的 Looker 模型。不过,一般来说,LookML 的使用越深入,就越能体会到深入了解 SQL 的好处。
如果您需要复习 SQL,不妨参考以下我们推荐的一些资源:
- 可汗学院的 SQL 课程:互动式 SQL 教程
- SQLZoo 互动式 SQL 教程
- Ben Forta 撰写的 Sams Teach Yourself SQL in 10 Minutes 一书
了解 LookML 基础知识
这些资源将帮助您快速掌握 LookML 知识。使用学习账号尝试不同的设计模式。
- 首先了解 LookML 术语和概念。
- 继续阅读Looker 如何生成 SQL 和高级 LookML 概念。
- 在充分掌握 LookML 和 SQL 后,您可以了解我们更高级的功能,例如派生表和模板化过滤条件。
在学习 LookML 基础知识后,请参阅以下页面,了解各种类型的 LookML 参数: