使用 LookML 和 Liquid 创建动态 SQL 派生表

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

GSP932

Google Cloud 自学实验的徽标

概览

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

在本实验中,您将学习如何创建和更新 SQL 派生表,以生成动态值并满足多种应用场景的需要。

您将执行的操作

  • 创建 SQL 派生表以满足多种应用场景的需要
  • 更新 SQL 派生表,以使用 Liquid 的模板化过滤条件生成动态值
  • 了解业务用户如何利用动态 SQL 派生表回答复杂问题

前提条件

需要熟悉 LookML。建议您先完成了解在 Looker 中如何使用 LookML 课程,然后再开始本实验。

设置和要求

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

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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. 创建单个 SQL 派生表以满足多种应用场景的需要

在 LookML 中,您可以使用 SQL 查询来定义 SQL 派生表,也可以使用“探索”查询来定义原生派生表。对于 SQL 开发者而言,使用 SQL 派生表往往更易于理解,也更便于快速上手 Looker 中的派生表功能。

在此任务中,您将创建一个名为 user_facts 的 SQL 派生表,该表足够灵活,可回答多个客户行为问题,例如:

  • 美国各州所有客户的平均终身收入和平均终身订单数分别是多少?
  • 除客户的终身总收入和终身总订单数外,其首个订单日期和末次订单日期分别是哪天?

使用 SQL 查询定义新的派生表

  1. 首先,在 Looker 界面的左下方,点击切换按钮进入开发模式
  1. 点击开发标签页,然后点击 SQL Runner

  2. SQL 查询窗口中,添加以下查询:

SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id LIMIT 10

在本例中,目标查询会选择 user_id,统计该用户的终身订单数,并将消费金额求和,得出该用户的终身收入。它还会将 created_at 列的最小值和最大值分别确定为首次订单日期和末次订单日期。

GROUP BY 子句用于按 user_id 对结果进行分组,LIMIT 子句用于限制结果,因为您只需要查看一部分记录,以确保查询正常运行。

  1. 点击运行可查看查询结果。

显示了 10 行数据的结果表格

在本例中,查询确实返回了用户 ID、终身订单数、用户带来的终身收入以及首次和末次订单日期。

请注意,LIMIT 子句用于减少此测试期间返回的数据量;在后续步骤中,您将为 SQL 派生表创建一个新的视图文件,届时将移除 LIMIT 子句。

为 SQL 派生表创建新的视图文件

  1. 点击运行(页面右上角)旁边的设置 (“设置”齿轮图标),然后选择添加到项目

  2. 对于项目,选择 qwiklabs-ecommerce

  3. 视图名称部分,输入:user_facts

  4. 点击添加

您将被重定向到 Looker IDE,以查看为 SQL 派生表新创建的视图文件。您可以看到,Looker 会根据您在 SQL Runner 中输入的查询自动为 SQL 派生表生成视图文件。视图文件的前 12 行如下所示:

view: user_facts { derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id LIMIT 10 ;; }

在 Looker 中,您的文件应如下所示:

显示了 10 行代码的 user_facts.view

请注意,新的 user_facts 视图已在 views 文件夹之外创建。最佳实践是让视图文件在项目中井然有序。

  1. 点击 views 旁边的箭头,查看视图列表。

  2. 点击 user_facts.view 并将其拖放到 views 文件夹下。

  3. 点击 user_facts.view,查看 SQL 派生表的视图文件。

Looker 会为 SQL 查询的 SELECT 子句中的每一列自动生成一个维度,并生成一个新的计数度量。在接下来的步骤中,您将修改视图文件,以移除不再需要的 LIMIT 子句,隐藏新的计数度量,并为视图添加主键。

  1. 从 sql 参数中删除 LIMIT 10 对应的代码行。

如前所述,Looker 会自动生成计数度量以及派生表中使用的维度。有时,如果您在另一个视图中已经有一个提供相同数量的计数,那么自动生成的计数度量可能没有价值。

在此示例中,自动生成的计数度量在计算订单 ID 的数量,而 order_items 视图中已经有订单计数。

您可以删除计数度量,或者使用 hidden: yes 参数将其隐藏。如果您想保留该度量以验证此计数与另一个计数是否相同,将其隐藏是不错的想法。

  1. measure: count 定义中,在 type: count 前添加新的一行,并插入以下内容:
hidden: yes

最后的一项最佳实践是确保新视图具有主键。

在此示例中,您可以将 primary_key: yes 参数添加到 user_id 维度。该维度是此视图的中心组织 ID,提供有关每个订单的详细信息。

  1. dimension: user_id 定义中,在 type: number 前添加新的一行,并插入以下内容:
primary_key: yes

现在,您可以使用名为 user_facts 的新视图创建新的维度和度量,将其联接到模型文件中的“探索”,和/或完成 Git 工作流,将更改发送到生产环境。在接下来的部分中,您将继续在此基础上进行构建。

  1. 点击保存更改。更新后的代码应如下所示:
view: user_facts { derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id ;; } measure: count { hidden: yes type: count drill_fields: [detail*] } dimension: user_id { primary_key: yes type: number sql: ${TABLE}.user_id ;; }

在 Looker 中,您的文件应如下所示:

显示了 28 行代码的 user_facts.view

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

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

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

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

点击“检查我的进度”,验证已完成以下目标: 为 SQL 派生表创建视图文件

任务 2. 添加度量来回答业务问题

在本部分中,您将添加两个度量来回答您最初感兴趣的客户行为问题:美国各州所有客户的平均终身收入和平均终身订单数分别是多少?

  1. user_facts.view 视图中,添加两个度量 average_lifetime_revenueaverage_lifetime_order_count,分别用于计算平均终身收入和平均终身订单数:
measure: average_lifetime_revenue { type: average sql: ${TABLE}.lifetime_revenue ;; } measure: average_lifetime_order_count { type: average sql: ${TABLE}.lifetime_order_count ;; }
  1. 点击保存更改。您的视图应如下所示:

user_facts.view,显示了第 25 行到第 43 行代码,模仿上一步中的布局

将新视图与“探索”联接

在本部分中,您将检查并测试新的派生表。首先,您需要将此“探索”与模型文件中的 order_items“探索”定义联接,然后使用 Order Items“探索”来确认将更改推送到生产环境后业务用户会看到什么。

  1. 在同一页面中,点击 model 文件夹中的 training_ecommerce.model 文件,修改其内容。

  2. 找到 explore: order_items 定义。请注意,实验中已经有定义的多个联接,例如 users 视图的联接。

显示了第 14 行到第 28 行的 training_ecommerce.model

  1. explore: order_items 定义中,在现有 users 联接的上方,通过指定以下内容添加一个新的 user_facts 联接:
join: user_facts { type: left_outer sql_on: ${order_items.user_id} = ${user_facts.user_id};; relationship: many_to_one }

sql_on 参数将联接字段识别为 user_idrelationship 参数识别出 order_items 中可能存在 user_id 的多个实例,但 user_facts 中每个 user_id 只有一个实例,该表以每个订单一行摘要的形式显示。

  1. 点击保存更改。您的“探索”现在应包含以下内容:
explore: order_items { join: user_facts { type: left_outer sql_on: ${order_items.user_id} = ${user_facts.user_id};; relationship: many_to_one } join: users { type: left_outer sql_on: ${order_items.user_id} = ${users.id} ;; relationship: many_to_one } ... ... ... }

在 Looker 中,您的视图现在应如下所示:

已添加 user_facts 探索的 training_ecommerce.model,显示了第 1 行到第 29 行

  1. 现在,您已将视图联接到“探索”,接下来请前往 Order Items 的“探索”页面。

  2. User Facts 视图下,选择 User ID 维度,以及 Average Lifetime Order CountAverage Lifetime Revenue 度量。

  3. 将“行数上限”设置为 100

  4. 点击运行。结果应如下所示:

结果表格,其中显示了“User ID”维度以及“Average Lifetime Order Count”和“Average Lifetime Revenue”度量的 10 行数据

  1. 现在,移除 User ID 维度,并在“Users”视图中添加 State 维度。

  2. 点击 Country 维度,然后为其添加过滤条件。

  3. 选择 USA

USA 过滤条件

  1. 点击运行以再次运行查询。

您可以看到,如何利用这些相同的度量来计算每个用户和每个州对应的平均终身收入以及平均终身订单数!

  1. 结果应类似于以下内容:

结果表格,其中显示了“Users Country”“Users State”“Average Lifetime Order Count”和“Average Lifetime Revenue”度量的 10 行数据

  1. 返回到 training_ecommerce.model 文件。

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

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

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

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

点击“检查我的进度”,验证已完成以下目标: 添加度量来回答业务问题

任务 3. 更新 SQL 派生表以使用模板化过滤条件生成动态值

正如您在之前的实验中所见,模板化过滤条件遵循与参数相同的逻辑模式。同样,主要区别在于,模板化过滤条件允许最终用户从多种过滤条件运算符中进行选择。对于数字数据类型,这可以是“等于”“大于”“介于”等。

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

在本部分中,您将修改第一部分中的 SQL 派生表定义,以便根据用户选择的时间范围重新计算所有值。

  1. 返回到 Looker IDE 中的 user_facts 视图。

  2. 首先,如下所示修改 SQL 派生表定义,以包含 WHERE 条件子句:

derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items WHERE {% condition select_date %} order_items.created_at {% endcondition %} GROUP BY user_id;; }
  1. 接下来,在 derived_table 定义下添加一个新过滤条件,以便用户选择日期:
filter: select_date { type: date suggest_explore: order_items suggest_dimension: order_items.created_date }

视图文件的前 18 行现在应如下所示:

view: user_facts { derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items WHERE {% condition select_date %} order_items.created_at {% endcondition %} GROUP BY user_id;; } filter: select_date { type: date suggest_explore: order_items suggest_dimension: order_items.created_date }
  1. 点击保存更改。您的文件现在应如下所示:

显示了第 1 行到第 18 行的 user_facts.view

现在,您将通过重复上一个任务中的查询来测试 Order Items“探索”中的动态 SQL 派生表,以查看添加过滤条件后值是否会发生变化。

  1. 返回到 Order Items“探索”。

  2. 在“User Facts”视图下,选择 Average Lifetime Order CountAverage Lifetime Revenue 度量。

  3. 在“Users”视图下选择 State 维度。

  4. 在“User Facts”视图下,点击名为 Select Date 的新的“只有过滤条件的字段”旁边的过滤图标。

  5. 对于界面顶部的第一个过滤条件值,请保留“是过去的时间”处于选中状态。

  6. 对于第二个过滤条件值,请选择 complete years,然后在空白值框中添加 1

  7. 在“Users”视图中,添加 Country 过滤条件,并将其设置为等于 USA

  8. 点击运行,查看结果。

您将看到过去一整个年度内每个州或国家/地区对应的 Average Lifetime Order Count 和 Average Lifetime Revenue。

  1. 点击 SQL 标签页,查看 SQL。

  2. 此时,您可以尝试使用不同的过滤条件值,并查看 SQL 标签页,了解模板化过滤条件如何相应地更改值。

  3. 返回到 user_facts 视图。

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

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

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

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

点击“检查我的进度”,验证已完成以下目标: 更新 SQL 派生表以使用模板化过滤条件生成动态值

恭喜!

在本实验中,您创建了 SQL 派生表,以使用 Liquid 的模板化过滤条件生成动态值,并利用动态 SQL 派生表回答复杂问题。

后续步骤/了解详情

Google Cloud 培训和认证

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

上次更新手册的时间:2024 年 4 月 24 日

上次测试实验的时间:2024 年 4 月 24 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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