LookML 是 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 互动的方式。
- 左侧导航面板中的“探索”面板按模型名称排列。model每个模型名称下方都会显示该模型中定义的可用探索列表。
- 用户可以搜索特定的探索。
开发者可以为探索定义说明,用户可以将鼠标悬停在探索菜单中的“探索”名称上来查看说明。
字段选择器窗格按视图名称进行组织。每个视图名称下方都会显示该视图所含表中的可用字段。大多数视图会同时显示维度和测量。此示例从视图文件中定义的“返回日期”维度组中选择“月份”维度。
用户可以选择多个测量作为查询的基础。
用户可以在字段选择器窗格中应用过滤器和数据透视等选项。
用户可以优化查询中的字词。
用户可以选择要应用于查询结果的可视化类型。
运行此探索会生成一个 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 教程
- Sams 《在 10 分钟内学会 SQL》作者:Ben Forta
了解 LookML 基础知识
这些资源将快速启动您的 LookML 知识。使用您的学习账号尝试不同的设计模式。
- 从 LookML 术语和概念开始。
- 继续阅读 Looker 如何生成 SQL 以及 LookML 高级概念。
- 充分了解 LookML 和 SQL 后,不妨了解我们更高级的功能,例如派生表和模板化过滤条件。
学习 LookML 基础知识后,请参阅以下页面,简要了解不同类型的 LookML 参数: