使用 Liquid 增强 Looker 中用户的互动性

实验 15 分钟 universal_currency_alt 免费 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP934

Google Cloud 自学实验的徽标

概览

Looker 是 Google Cloud 中的现代化数据平台,支持您以交互方式分析和可视化数据。您可以使用 Looker 展开深入数据分析、整合来自不同数据源的分析洞见,构建切实可行的数据驱动型工作流,以及创建自定义数据应用。

在本实验中,您将学习如何使用 Liquid 参数和模板化过滤条件来增强 Looker 的用户互动性,并使用 Liquid 参数和模板化过滤条件来创建动态维度和测量。

目标

在本实验中,您将学习如何完成以下操作:

  • 使用 Liquid 参数创建动态维度
  • 使用模板化过滤条件创建动态维度
  • 使用模板化过滤条件创建动态测量

前提条件:

需要熟悉 LookML 和 Liquid。开始本实验之前,建议先完成“开始使用 Liquid 自定义 Looker 用户体验”实验。

设置

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Looker

  1. 准备就绪时,点击开始实验

    此时您会看到“实验详细信息”窗格,其中包含您在进行该实验时必须使用的临时凭据。

    如果该实验需要付费,系统会打开一个弹出式窗口供您选择支付方式。

    请注意,“实验详细信息”窗格中会显示实验凭据。您需要使用这些凭据来登录 Looker 实例以进行该实验。

    注意:如果您使用其他凭据,将会收到错误消息或承担相关费用
  2. 点击打开 Looker

  3. 电子邮件地址密码字段中输入提供的用户名和密码。

    用户名:

    {{{looker.developer_username | Username}}}

    密码:

    {{{looker.developer_password | Password}}} 重要提示:您必须使用本页面上“实验详细信息”窗格中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。如果您有自己的个人 Looker 账号,请不要在此实验中使用。
  4. 点击登录

    登录成功后,您会看到用于本实验的 Looker 实例。

任务 1. 使用 Liquid 增强互动性

在 LookML 中,我们将很多变量定义为参数,例如维度或测量类型、sqldrill_fields。还有一个本身就叫 parameter(参数)的对象,为清晰起见,我们将其称为 Liquid 参数

参数和模板化过滤条件使用 Liquid 来增强探索、Look 和信息中心内的互动性。其应用场景是:有时您希望能够更灵活地影响生成的 SQL。使用维度过滤条件时,它仅更新外层查询的 WHERE 子句。使用测量过滤条件时,它会更新外层查询的 HAVING 子句。这两种选项都有可能“过度”过滤结果集。

参数和模板化过滤条件

“参数和模板化过滤条件”这两个词通常放在一起表述,因为在使用 Liquid 时,它们实现的目的基本相同。主要区别在于,参数仅支持一个特定的“固定值”,而模板化过滤条件则可利用给定数据类型的“所有过滤条件运算符”。对于字符串,这些运算符包括“等于”“不等于”“包含”“开头是”等。参数与模板化过滤条件的区别概述如下:

  • 参数:可由用户输入的“特定固定值”,然后通过 Liquid 直接传递到 SQL 查询中
  • 模板化过滤条件:用户输入的值,通过“智能编写的条件逻辑”传递到 SQL 查询中

使用参数和模板化过滤条件,在通过用户输入影响编写的 SQL 查询方面提供了更大的灵活性。您可以使用参数和模板化过滤条件来创建:

  • 动态维度和测量,这不仅能够整合代码,还可以提供更流畅的用户体验
  • 动态派生表(在数据粒度和过滤条件方面)
  • 在结果集和标签中按条件显示的值

这一切听起来都很棒,但这种行为周期在 Looker 中是什么样的呢?

行为周期的第一步到第四步

  • 第 1 步:首先由开发者设置后端逻辑,这包含两个部分:
    • 一个参数或模板化过滤条件,显示在界面中供用户与之互动
    • sql 参数中的一个位置,用于调用参数或过滤条件值并对其进行处理
  • 第 2 步:最终用户随后在参数或模板化过滤条件中输入一个值,这类似于探索、Look 或信息中心内的“常规”维度或测量过滤条件。
  • 第 3 步:该值随后被插入到 SQL 中,并基于更改后的 SQL 构建查询。
  • 第 4 步:该查询运行并返回一个反映了用户输入的值的探索。此周期适用于模板化过滤条件和参数

参数的概念更简单易懂,所以我们先从它开始。

任务 2. 使用 Liquid 参数创建动态维度

“Liquid 参数”被定义为接收用户选择的特定硬编码值,这些值随后会被传递到生成的 SQL 查询中。

在本部分,您将在 order_items 视图中创建一个参数和动态维度,让用户能够在 Order Items 探索中选择不同的订单创建日期字段。用户应能够选择 Date(日期)、Week(周)和 Month(月),并且会看到所选内容不同,查询结果也会发生相应的变化。

  1. 首先,在 Looker 界面的左下方,点击切换按钮进入开发模式

“开发模式”切换按钮

  1. 点击开发标签页,然后选择 qwiklabs-ecommerce LookML 项目。找到 order_items 视图文件。

首先,您需要在界面中添加一些互动元素,以便用户进行操作。这就是 parameter 对象。像命名维度或测量那样为它命名,例如:select_timeframe。类型应为 unquoted(不带引号),因为您不希望 Looker 为我们生成的值带有单引号。

接下来,对一个或多个 allowed_values 进行硬编码。value 子参数是实际插入到 SQL 查询中的内容,label 子参数则决定该值在界面中的显示方式。您也可以选择将这些 allowed_value 值中的一个设置为 default_value。在这里,您可以选择“month”(月)。

现在,您将创建一个可以接收用户输入的 Liquid 参数;只有三个值是硬编码的,因此可供用户选择的是:created_datecreated_weekcreated_month

  1. order_items 视图文件中,在所有维度上方,为新参数添加以下语法(大概在 drill_fields 下方的第 6 行):
parameter: select_timeframe { type: unquoted default_value: "created_month" allowed_value: { value: "created_date" label: "Date" } allowed_value: { value: "created_week" label: "Week" } allowed_value: { value: "created_month" label: "Month" } }

总结一下,子参数定义如下:

  • label(标签):用户将在过滤条件选项中看到的内容
  • value(值):将被插入到 SQL 查询中的值
  • default_value(默认值):当用户尚未进行选择时,系统会自动插入的值

您的文件现在应如下所示:

order_items.view 页面

接下来,您可能希望信息中心或 Look 中显示的字段能动态变化,即根据用户所选指标或希望看到的数据粒度做出调整。现在,您可以使用刚才创建的 LookML 参数,将其应用到一个维度上,该维度会将参数的过滤条件值与不同的时间范围字段关联起来。

  1. 接下来,您将在同一视图文件中定义动态维度。在 order_items 视图文件中,在参数定义之后,为新的动态维度添加以下语法(约第 23 行):
dimension: dynamic_timeframe { label_from_parameter: select_timeframe type: string sql: {% if select_timeframe._parameter_value == 'created_date' %} ${created_date} {% elsif select_timeframe._parameter_value == 'created_week' %} ${created_week} {% else %} ${created_month} {% endif %} ;; }

现在,系统会根据用户在信息中心内选择的参数值,返回对应的时间范围字段。请注意,您正在使用 label_from_parameter 将所选值标签传递给模块。

由于 ${created_week}${created_month} 时间范围(可能还有 ${created_date},具体取决于数据库方言)会被 Looker 转换为字符串,因此整个 dynamic_timeframe 维度需要是字符串才能相互匹配。

这意味着,当业务用户在探索中使用此维度时,他们需要记得核查排列顺序。Looker 的默认排序行为是:检查是否存在日期或时间维度;如果不存在,则按第一个测量进行排序。由于这实际上属于字符串类型,所以 Looker 将首先按测量进行排序,而这可能会打乱时间顺序。

您可能会想,那这样做的意义何在?这难道不是引入了不必要的复杂性吗?请注意以下两点:Looker 的大多数业务用户都是 Viewer(查看者),而不是 Explorer(探索者)。也就是说,他们可以查看已准备好的信息中心和 Look,但不能在探索中自由选择不同的字段,例如“Created Date”和“Created Week”。过滤条件是他们更改所见内容的唯一方式。

由于 Viewer 用户只会查看他人创建的内容,因此 dynamic_timeframe 实际上是字符串且需要手动排序这一点,对他们没有任何影响。

您的文件现在应如下所示:

order_items.view 文件页面

注意:请留意,上一步中创建的参数在 label_from_parameter 和 sql 参数中都有引用。在“可视化图表”标签页中,时间范围选项将显示为“Month”(月)、“Week”(周)、“Date”(日期),而不是维度的名称 (Dynamic Timeframe)。

现在,您可以在 Order Items 探索中测试动态维度。

  1. 点击保存更改。接下来,前往 Order Items 探索。

  2. Order Items 视图下,选择新的 Dynamic Timeframe 维度和 Order Count 测量。

  3. 点击名为 Select Timeframe 的新的“只有过滤条件的字段”旁边的过滤图标。

    注意:这是 Liquid 参数,列在 Order Items 视图下的 Dimensions 列表上方。
  4. 对于界面顶部的过滤条件选项,保持选中“是”。 从下拉菜单中选择 Month

Filters(1) 对话框,其中“order items select timeframe”设置为“is month”

  1. 点击运行,查看结果。您现在还可以点击 SQL 标签页来查看 SQL。

结果页面,其中“Order items: Dynamic timeframe”和“Order items: Order count”列下显示有十行信息

  1. 接下来,选择 WeekDate 过滤条件。点击运行,即可查看每个过滤条件对应的更新结果。

  2. 每次运行后,点击 SQL 标签页,查看参数是如何变化并被插入到 SQL 查询中的。

  3. 返回到 Order Items 视图。

提交更改并部署到生产环境

  1. 点击验证 LookML,然后点击提交更改并推送

  2. 添加提交消息,然后点击提交

  3. 最后,点击部署到生产环境

点击检查我的进度,验证您已完成上述任务。 使用 Liquid 参数创建动态维度

任务 3. 使用模板化过滤条件创建动态维度

模板化过滤条件遵循与参数相同的逻辑模式。同样,主要区别在于,模板化过滤条件允许最终用户选择使用多种过滤条件运算符。对于数字数据类型,这可以是“等于”“大于”“介于下列二者之间”等。

在过滤条件中,值并不是硬编码的,而是由用户输入,然后传递到生成的 SQL 查询中。不过,您可以在过滤条件定义中指定探索和维度,以显示包含选项的下拉菜单。

在本部分,您将创建一个动态维度,它会获取产品类别的输入值,并在结果中创建两个分组:所选的原始类别和所有其他类别。

  1. 返回到 Looker IDE,然后前往 products 视图文件。

与 Liquid 参数一样,您首先需要在界面中创建元素,供最终用户与之互动。对于模板化过滤条件,您需要一个 filter 对象。

注意:为了获得最佳性能,您可以创建一个小型的隐藏探索(例如 explore: products {}),仅查询建议值所需的基本视图。
  1. 现在,您将创建一个 filter 对象,用于接收用户输入。在 products 视图文件中,在所有维度上方,为新过滤条件添加以下语法(约在 drill_fields 下方第 6 行)。

如您所见,模板化过滤条件不能像参数那样硬编码 allowed_values

  1. 建议的方法是使用 suggest_exploresuggest_dimension 为最终用户提供过滤条件建议下拉菜单:
filter: select_category { type: string suggest_explore: order_items suggest_dimension: products.category }

总结一下,子参数定义如下:

  • suggest_explore:要查询的探索,用于提取建议的过滤条件值列表
  • suggest_dimension:应在建议探索中使用的维度,用于提供建议的过滤条件值列表

您的文件现在应如下所示:

products.view 文件页面

接下来,在某处实现用户的过滤条件输入。现在,您将在同一视图文件中定义动态维度。

使用语法 {% condition filter_name %} 在 Liquid 块内引用模板化过滤条件。这可以让 Liquid 准备好应用模板化过滤条件。然后,指定要应用该过滤条件的字段名称,并使用 {% endcondition %} 标记结束该 Liquid 块。请注意,这与引用参数的方式略有不同;在这里,您需要指定一个要应用模板化过滤条件的字段和一个 endcondition。

  1. products 视图文件中,在过滤条件定义之后,为新动态维度添加以下语法(约第 12 行)。请注意,sql 参数中引用了在上一步中创建的过滤条件:
dimension: category_comparison { type: string sql: CASE WHEN {% condition select_category %} ${category} {% endcondition %} THEN ${category} ELSE 'All Other Categories' END ;; }

在这里,您从 select_category 获取用户的过滤条件,并将其应用到 ${category} 维度。如果类别值确实符合条件,则应显示在 category_comparison 维度中。如果类别值不符合条件,则应与所有其他不匹配的项一起归类为“All Other Categories”(所有其他类别)。

您的文件现在应如下所示:

products.view 文件页面

现在,您可以在 Order Items 探索中测试动态维度。

  1. 点击保存更改。接下来,前往 Order Items 探索。

  2. Products 视图下,选择名为 Category Comparison 的维度。

  3. 点击名为 Select Category 的新的“只有过滤条件的字段”旁边的过滤图标(注意:这是模板化过滤条件,列在 Products 视图下的 Dimensions 列表上方)。

  4. Order Items 视图下,选择 Order Count 测量。

  5. 对于界面顶部的过滤条件选项,保持选中“等于”。

  6. 点击空文本框即可看到下拉菜单,或输入 Jeans(您还会在下拉菜单中看到其他可能的值)。

Filters(1) 对话框,其中“Products select category”设置为“is equal to Jeans”

  1. 点击运行即可查看结果。结果应显示“Jeans”的计数为 38,910,而“All Other Categories”的计数为 294,449。

“结果”页面

  1. 当用户更新过滤条件时,模板化过滤条件逻辑会自动适配。亲自尝试以下操作:

    • 尝试向过滤条件中添加多个值
    • 尝试将过滤条件从“等于”更改为“包含”或“开头是”,结果看起来如何?
  2. 每次运行后,点击 SQL 标签页查看 SQL。

注意:查看 SQL 标签页有助于检查查询是如何从 LookML 格式化的,而分析 SQL 的过程则有助于建立适当的流程来排查可能出现的任何错误。
  1. 返回到 Products 视图。

提交更改并部署到生产环境

  1. 点击验证 LookML,然后点击提交更改并推送

  2. 添加提交消息,然后点击提交

  3. 最后,点击部署到生产环境

点击检查我的进度,验证您已完成上述任务。 使用模板化过滤条件创建动态维度

任务 4. 使用模板化过滤条件创建动态测量

您可以将模板化过滤条件与“隐藏”维度结合使用,以动态调整某个测量所带的过滤条件,从而生成动态测量值。

例如,营销团队的一个常见应用场景是需要分析来自各个流量来源的用户占比。在本部分,您将能够通过创建一个测量来解决此应用场景,该测量允许用户选择任何可用流量来源,并查看所选流量来源的动态用户计数(按维度,如国家/地区)。

  1. 返回到 Looker IDE,然后前往 users 视图文件。

同样,您先要在界面中创建元素,供最终用户与之互动。对于模板化过滤条件,您需要 filter 对象。

  1. users 视图文件中,在所有维度上方,为新过滤条件添加以下语法(约在 drill_fields 下方第 6 行):
filter: select_traffic_source { type: string suggest_explore: order_items suggest_dimension: users.traffic_source }

没有任何值是硬编码的,但是有针对探索和维度的建议值,将用于填充可供用户使用的下拉菜单。用户仍然可以输入其他值。

注意:这与您在上个部分创建的过滤条件非常相似。不过,您在此处将探索设置为 order_items,将维度设置为 users.traffic_source

您的文件现在应如下所示:

users.view 页面

  1. 接下来,您将在同一视图文件中定义隐藏维度。在 users 视图文件中,在过滤条件定义之后,为新隐藏维度添加以下语法(约第 12 行)。请注意,sql 参数中引用了在上一步中创建的过滤条件:
dimension: hidden_traffic_source_filter { hidden: yes type: yesno sql: {% condition select_traffic_source %} ${traffic_source} {% endcondition %} ;; }

您的文件现在应如下所示:

users.view 页面

  1. 最后,您将在同一视图文件中定义动态测量。在 users 视图文件中,在所有维度定义之后,为新动态测量添加以下语法(约第 105 行):
注意:请留意,过滤条件参数中引用了上一步中创建的隐藏维度。 measure: dynamic_count { type: count_distinct sql: ${id} ;; filters: [ hidden_traffic_source_filter: "Yes" ] }

您的文件现在应如下所示:

users.file 页面

现在,您可以在 Order Items 探索中测试动态测量。

  1. 点击保存更改。接下来,前往 Order Items 探索。

  2. Users 视图下,选择 Country 维度(或其他维度,以按属性获取计数)。

  3. 在 Users 视图下,选择新的 Dynamic Count 测量。

  4. 点击名为 Select Traffic Source 的新的“只有过滤条件的字段”旁边的过滤图标(注意:这是模板化过滤条件,列在探索左侧菜单中的维度上方)。

  5. 对于界面顶部的过滤条件值,保持选中“等于”。

  6. 点击空文本框即可看到下拉菜单,或输入 Email(您还会在下拉菜单中看到其他可能的值)。

Filters(1) 对话框,其中“Users select traffic source”设置为“is equal to email”

  1. 点击运行,查看结果。您将会看到,在流量来源等于“Email”的条件下,每个国家/地区所有用户的计数。

“结果”页面

点击检查我的进度,验证您已完成上述任务。 使用模板化过滤条件创建动态测量

  1. 尝试使用其他过滤条件值进行操作,并点击 SQL 标签页,查看参数在每次运行时是如何变化并插入到 SQL 查询中的。

  2. 返回到 Users 视图。

提交更改并部署到生产环境

  1. 点击验证 LookML,然后点击提交更改并推送

  2. 添加提交消息,然后点击提交

  3. 最后,点击部署到生产环境

恭喜!

在本实验中,您在 Looker 中使用 Liquid 创建了参数、模板化过滤条件以及动态维度和测量。首先,您创建了一个参数和动态维度,使用户能够选择不同的订单创建日期字段。然后,您创建了一个动态维度,该维度获取了“产品类别”输入值,并在结果中创建了两个分组:所选的原始类别和所有其他类别。最后,您创建了一个动态测量,使用户能够选择任何可用流量来源,并查看其动态用户计数。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

本手册的最后更新时间:2026 年 2 月 3 日

本实验的最后测试时间:2026 年 2 月 3 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。