使用 LookML 创建派生表

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

GSP858

Google Cloud 自学实验的徽标

概览

Looker 是 Google Cloud 中的现代数据平台,让业务用户能以交互方式分析数据和直观呈现数据。LookML 开发者可以通过创建新字段、表和视图来自定义和整理数据,从而挑选供业务用户使用的数据。

在 Looker 中,LookML 开发者可以使用派生表来创建底层数据库中尚未定义的新表。例如,作为 LookML 开发者,您可以创建派生表来汇总现有表中的详细信息,例如电子商务数据集中每个订单的详细信息。

在本实验中,您将学习如何在 LookML 中创建两种类型的派生表:SQL 派生表和原生派生表。

本实验已为您在 LookML 中创建了名为 qwiklabs-ecommerce 的项目。此项目基于一个模拟的电子商务数据集,其中包含订单、商品和用户信息。如需详细了解 LookML 建模相关信息,请参阅 Looker 文档。

您将执行的操作

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

  • 修改 Looker 管理员发布的现有 LookML 项目 (qwiklabs-ecommerce)
  • 创建 SQL 派生表
  • 创建原生派生表
  • 将派生表的新视图联接到“探索”
  • 在开发模式下测试 LookML 更改
  • 使用“探索”界面查看修改后的 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 派生表。该表汇总了每个订单的详细信息:订单 ID、用户 ID、商品数量和订购商品的总价。然后,在 qwiklabs-ecommerce 项目中为 SQL 派生表创建一个新的视图文件。

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

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

“开发模式”切换按钮

  1. Looker 导航菜单中,依次点击开发 > SQL Runner

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

SELECT order_items.order_id AS order_id ,order_items.user_id AS user_id ,COUNT(*) AS order_item_count ,SUM(order_items.sale_price) AS order_revenue FROM cloud-training-demos.looker_ecomm.order_items GROUP BY order_id, user_id LIMIT 10

在此示例中,查询会选择 order_iduser_id,统计与每个订单关联的商品数量,然后计算这些商品的总价。

具体来说,COUNT 子句用于计算各个订单商品 ID(order_items 表的主键)的数量,而 SUM 子句用于计算订单商品 ID 的 sale_price 总和。

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

  1. 验证您的查询是否类似于以下内容:

SQL 查询框

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

结果表,在四个列标题(order_id、user_id、order_item_count 和 order_revenue)下方显示 10 行数据

在本例中,查询确实返回了订单 ID、用户 ID、与每个订单关联的商品数量以及每个订单的总收入。

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

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

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

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

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

  4. 点击 添加

您将被重定向到 Looker IDE,以查看为 SQL 派生表新创建的视图文件。

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

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

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

  3. 点击 order_details.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 参数添加到 order_id 维度。该维度是此视图的中心组织 ID,提供有关每个订单的详细信息。

  1. dimension: order_id 定义中,在 type: number 前添加新行,并输入 primary_key: yes

现在,您可以使用名为 order_details 的新视图创建新的维度和度量,将其联接到模型文件中的“探索”,和/或完成 Git 工作流,将更改发送到生产环境。

  1. 点击保存更改

order_details.view 标签页以及“文件浏览器”面板。

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

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

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

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

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

任务 2. 创建一个原生派生表,汇总每个订单的详细信息

与 SQL 派生表不同,原生派生表 (NDT) 完全用 LookML 表示。原生派生表之所以有用,是因为它们体现了 LookML 的一个基本原则,即可重用性。它们允许您继承已有的维度、度量,甚至“探索”和联接逻辑。

由于您尽量减少了“硬编码”数据库引用数量,因此从长远来看,这会使您的代码更易于维护。

以上一部分中的 order_details SQL 派生表为例。SQL 中包含 order_items 的 COUNT 和 sale_price 的 SUM。不过,您的 order_items 视图已经包含 order_item_counttotal_revenue 的度量。您无需创建新的 SQL 派生表,而是可以使用现有维度和度量来轻松定义新的 NDT。

在本部分中,您将重新创建上一个示例中的 SQL 派生表,这次将其作为原生派生表。创建原生派生表最简单的方法是通过“探索”。您将使用 Order Items Explore(订单项探索)创建所需的原生派生表,其中包含每个订单的详细信息:订单 ID、用户 ID、商品数量和订购商品的总价。

根据“探索”查询定义新的原生派生表

  1. Looker 导航菜单中,点击探索

  2. E-Commerce Training(电子商务培训)下,点击订单项

  3. 点击订单项旁边的箭头。

可用的维度和度量将在“订单项”的数据面板中列出。请注意,“探索”会自动为您生成有效且性能良好的 SQL 查询。

  1. Order Items > Dimensions(订单项 > 维度)下,点击 Order ID(订单 ID)和 User ID(用户 ID)。

  2. Order Items > Measures(订单项 > 度量)下,点击 Order Count(订单数)和 Total Revenue(总收入)。

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

查询结果表,其中包含订单项 ID、用户 ID、数量和总收入对应的行。

请花点时间检查查询结果,确保返回的是您需要的结果。在本例中,请求正确返回了订单 ID、用户 ID、与每个订单关联的商品数量以及每个订单的总收入。

  1. 点击运行(页面右上角)旁边的设置 (设置齿轮图标),然后点击获取 LookML

  2. 点击派生表,并将 LookML 代码复制到计算机剪贴板。您需要将此 LookML 代码粘贴到此原生派生表的新视图文件中。

获取 LookML 派生表代码

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

  1. 在新标签页中打开新的 Looker 窗口。

  2. Looker 导航菜单中,点击开发标签页,然后选择 qwiklabs-ecommerce LookML 项目。

  3. 文件浏览器旁边,点击添加文件或文件夹 (添加文件或文件夹图标)。

  4. 点击创建视图

  5. 对于文件名,输入 order_details_summary

  6. 点击创建

请注意,order_details_summary 视图的新视图文件是在 views 文件夹之外创建的。

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

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

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

  4. 删除视图文件中的所有自动生成的 LookML。

  5. 粘贴您复制的本地派生表的 LookML 代码。

  6. 将自动生成的视图名称(例如 add_a_unique_name_1623275538)替换为 order_details_summary。您的视图文件应如下所示:

order_details_summary.view page

请注意,Looker 建议包含模型文件,但这些行已被注释掉。最佳做法是将模型文件的行注释掉。原因是模型文件几乎总是包含其他文件,因此,如果您有很多相互包含的文件,则可能会在模型中创建循环依赖项。这可能会导致语法验证错误。

现在,您可以使用名为 order_details_summary 的新视图创建新的维度和度量,将其联接到模型文件中的“探索”,和/或完成 Git 工作流,将更改发送到生产环境。

  1. 点击保存更改

现在,您不会将其联接到“探索”,而是对 SQL 派生表执行此操作。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 为原生派生表创建视图文件

任务 3. 将新视图与“探索”联接

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

请注意,虽然您不需要为原生派生表完成最后这些步骤,但无论视图是为 SQL 派生表还是原生派生表创建的,将视图联接到“探索”的过程都是相同的。

联接 SQL 派生表的视图

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

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

training_ecommerce.model 页面

  1. explore: order_items 定义中,在现有 users 联接的上方,添加一个新的 order_details 联接,并指定:
join: order_details { type: left_outer sql_on: ${order_items.order_id} = ${order_details.order_id};; relationship: many_to_one }

sql_on 参数将联接字段标识为 order_idrelationship 参数用于标识 order_items 中可能存在 order_id 的多个实例,但 order_details 中每个 order_id 只有一个实例,该表以每个订单一行摘要的形式显示。

  1. 点击保存更改

training_ecommerce.model 页面

在“探索”中查看 SQL 派生表中的数据和生成的 SQL

  1. Looker 导航菜单中,点击探索

  2. E-Commerce Training(电子商务培训)下,点击订单项

  3. 点击订单详情旁边的箭头。

  4. Order Details > Dimensions(订单详情 > 维度)下,点击 Order ID(订单 ID)、Order Item Count(订单商品数量)、Order Revenue(订单收入)和 User ID(用户 ID)。

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

  6. 点击 SQL 标签页,查看 Looker 生成的 SQL 查询。

SQL 标签页,显示生成的 SQL 查询

请注意由 WITH 子句标识的通用表表达式 (CTE)。这种原生派生表被认为是临时表,因为它是在运行时作为 CTE 生成的,而不是存储在底层数据库中。

派生表也可以是永久性的,这意味着它们存储在底层数据库中。如需详细了解永久性派生表,请查看创建永久性派生表 (PDT) 文档

在下一部分中,我们将探讨如何保留派生表,以便将它们写回数据库。

  1. 返回到 training_ecommerce.model 文件。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 联接 SQL 派生表的视图

任务 4. 保留派生表

到目前为止,您在示例中用到的派生表都是临时表,这意味着 Looker 会在“探索”查询中为它们生成 CTE(或临时表)。

现在,您将了解派生表的另一种存在类型:永久性派生表。永久性派生表 (PDT) 会写入到连接的数据库并存储在其中。无论派生表是 SQL 派生表还是原生派生表,保留派生表的步骤都是相同的。

如前所述,保留派生表的好处是,当业务用户需要时,这些表随时可用,因此可以缩短查询运行时长。缺点是它们会占用数据库中的存储空间(这可能与费用有关),而且不够灵活。

如需保留派生表,您必须在定义中使用以下一个或两个参数:

  • datagroup_trigger 使用数据组或在模型中配置的缓存政策。如果模型中定义了数据组,那么这是保留派生表的最佳做法。
  • sql_trigger_value 使用预先编写的 SELECT 语句,该语句返回一个值。Looker 会重复向数据库发送该 SELECT 语句,当发现结果发生变化时,就会将此作为重建 PDT 的提示。
  • persist_for 指示 PDT 在设定的时长内保持运行,例如“1 hour”(1 小时)或“4 hours”(4 小时)。

不过,需要注意的是,persist_for 没有重建逻辑,因此 PDT 在此期间不会更新。此外,一旦时间到期,PDT 就会被删除,直到业务用户需要它来执行查询时才会重新出现。

由于 PDT 的主要优势是可随时使用数据,从而最大限度地缩短查询运行时长,因此建议将 persist_forsql_trigger_value 结合使用,以确保能在 PDT 中捕获到数据更新,或者直接使用 datagroup_triggersql_trigger_value

保留原生派生表

在此任务中,您将使用参数 datagroup_trigger 来保留原生派生表。该参数会根据模型文件中预定义的数据组(缓存政策)重建永久性派生表。

对于名为 order_details_summary 的原生派生表,您添加 training_ecommerce_default_datagroup 作为 datagroup_trigger,以便持久派生表使用 training_ecommerce.model 中的 training_ecommerce_default_datagroup 内提供的规则每小时重建模型中定义的所有对象。

  1. Looker 导航菜单中,点击开发标签页,然后选择 qwiklabs-ecommerce LookML 项目。

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

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

  4. derived_table 定义中,在 explore_source: order_items 的右括号 (}) 后添加新行,并粘贴以下代码:

datagroup_trigger: training_ecommerce_default_datagroup
  1. 点击保存更改。您的视图文件应如下所示:

order_details_summary.view page

在“探索”中查看为永久性派生表生成的 SQL

  1. Looker 导航菜单中,点击探索

  2. E-Commerce Training(电子商务培训)下,点击订单项

  3. 点击订单详情旁边的箭头。

  4. Order Details > Dimensions(订单详情 > 维度)下,点击 Order ID(订单 ID)、Order Item Count(订单商品数量)、Order Revenue(订单收入)和 User ID(用户 ID)。

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

  6. 点击 SQL 标签页,查看 Looker 生成的 SQL 查询。

突出显示的 SQL 标签页,其中显示了生成的 SQL 查询

现在,派生表已经变为永久性的,之前由 WITH 子句标识的 CTE 已不存在,而是被 SELECT 语句取代。该语句用于查询 order_details_summary 永久性派生表中的字段。

  1. 返回到 order_details_summary 文件。

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

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

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

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

恭喜!

在本实验中,您学习了如何在 LookML 中创建 SQL 派生表和原生派生表,以定义底层数据库中尚不存在的新表。

后续步骤/了解详情

Google Cloud 培训和认证

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

本手册的最后更新时间:2024 年 4 月 22 日

本实验的最后更新时间:2021 年 10 月 11 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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