准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create a view file for the SQL derived table
/ 35
Create a view file for the native derived table
/ 35
Join the view for the SQL derived table
/ 30
Looker 是 Google Cloud 中的现代数据平台,让业务用户能以交互方式分析数据和直观呈现数据。LookML 开发者可以通过创建新字段、表和视图来自定义和整理数据,从而挑选供业务用户使用的数据。
在 Looker 中,LookML 开发者可以使用派生表来创建底层数据库中尚未定义的新表。例如,作为 LookML 开发者,您可以创建派生表来汇总现有表中的详细信息,例如电子商务数据集中每个订单的详细信息。
在本实验中,您将学习如何在 LookML 中创建两种类型的派生表:SQL 派生表和原生派生表。
本实验已为您在 LookML 中创建了名为 qwiklabs-ecommerce 的项目。此项目基于一个模拟的电子商务数据集,其中包含订单、商品和用户信息。如需详细了解 LookML 建模相关信息,请参阅 Looker 文档。
在本实验中,您将学习如何完成以下操作:
qwiklabs-ecommerce)请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
准备就绪时,点击开始实验。
此时您会看到“实验详细信息”窗格,其中包含您在进行该实验时必须使用的临时凭据。
如果该实验需要付费,系统会打开一个弹出式窗口供您选择支付方式。
请注意,“实验详细信息”窗格中会显示实验凭据。您需要使用这些凭据来登录 Looker 实例以进行该实验。
点击打开 Looker。
在电子邮件地址和密码字段中输入提供的用户名和密码。
用户名:
密码:
点击登录。
登录成功后,您会看到用于本实验的 Looker 实例。
在 LookML 中,您可以使用 SQL 查询来定义 SQL 派生表,也可以使用“探索”查询来定义原生派生表。
在此任务中,您将编写 SQL 查询来定义一个新的 SQL 派生表。该表汇总了每个订单的详细信息:订单 ID、用户 ID、商品数量和订购商品的总价。然后,在 qwiklabs-ecommerce 项目中为 SQL 派生表创建一个新的视图文件。
在 Looker 导航菜单中,依次点击开发 > SQL Runner。
在 SQL 查询窗口中,添加以下查询:
在此示例中,查询会选择 order_id 和 user_id,统计与每个订单关联的商品数量,然后计算这些商品的总价。
具体来说,COUNT 子句用于计算各个订单商品 ID(order_items 表的主键)的数量,而 SUM 子句用于计算订单商品 ID 的 sale_price 总和。
GROUP BY 子句用于按 order_id 和 user_id 对结果进行分组,LIMIT 子句用于限制结果,因为我们只需要查看一部分记录,以确保查询正常运行。
在本例中,查询确实返回了订单 ID、用户 ID、与每个订单关联的商品数量以及每个订单的总收入。
请注意,LIMIT 子句用于减少此测试期间返回的数据量;在后续步骤中,您将为 SQL 派生表创建一个新的视图文件,届时将移除 LIMIT 子句。
点击运行(页面右上角)旁边的设置 (),然后选择添加到项目。
对于项目,选择 qwiklabs-ecommerce。
在视图名称部分,输入:order_details。
点击 添加。
您将被重定向到 Looker IDE,以查看为 SQL 派生表新创建的视图文件。
请注意,order_details 视图的新视图文件已在 views 文件夹之外创建。最佳做法是让视图文件在项目中井然有序。
点击 views 旁边的箭头,查看视图列表。
点击 order_details.view 并将其拖动到 views 文件夹下。
点击 order_details.view,查看 SQL 派生表的视图文件。
Looker 会为 SQL 查询的 SELECT 子句中的每一列自动生成一个维度,并生成一个新的计数度量。在接下来的步骤中,您将修改视图文件,以移除不再需要的 LIMIT 子句,隐藏新的计数度量,并为视图添加主键。
LIMIT 10 对应的代码行。如前所述,Looker 会自动生成计数度量以及派生表中使用的维度。有时,如果您在另一个视图中已经有一个提供相同数量的计数,那么自动生成的计数度量可能没有价值。
在此示例中,自动生成的计数度量正在计算订单 ID,而 order_items 视图中已经有订单计数。
您可以使用 hidden: yes 参数删除或隐藏计数度量。如果您想保留该度量以验证此计数与另一个计数是否相同,则可以隐藏该度量。
type: count 前面添加新的一行,并输入 hidden: yes。最后,最佳实践是确保新视图具有主键。
在此示例中,您可以将 primary_key: yes 参数添加到 order_id 维度。该维度是此视图的中心组织 ID,提供有关每个订单的详细信息。
type: number 前添加新行,并输入 primary_key: yes。现在,您可以使用名为 order_details 的新视图创建新的维度和度量,将其联接到模型文件中的“探索”,和/或完成 Git 工作流,将更改发送到生产环境。
点击验证 LookML,然后点击提交更改并推送。
添加提交消息,然后点击提交。
最后,点击部署到生产环境。
点击检查我的进度以验证是否完成了以下目标:
与 SQL 派生表不同,原生派生表 (NDT) 完全用 LookML 表示。原生派生表之所以有用,是因为它们体现了 LookML 的一个基本原则,即可重用性。它们允许您继承已有的维度、度量,甚至“探索”和联接逻辑。
由于您尽量减少了“硬编码”数据库引用数量,因此从长远来看,这会使您的代码更易于维护。
以上一部分中的 order_details SQL 派生表为例。SQL 中包含 order_items 的 COUNT 和 sale_price 的 SUM。不过,您的 order_items 视图已经包含 order_item_count 和 total_revenue 的度量。您无需创建新的 SQL 派生表,而是可以使用现有维度和度量来轻松定义新的 NDT。
在本部分中,您将重新创建上一个示例中的 SQL 派生表,这次将其作为原生派生表。创建原生派生表最简单的方法是通过“探索”。您将使用 Order Items Explore(订单项探索)创建所需的原生派生表,其中包含每个订单的详细信息:订单 ID、用户 ID、商品数量和订购商品的总价。
在 Looker 导航菜单中,点击探索。
在 E-Commerce Training(电子商务培训)下,点击订单项。
点击订单项旁边的箭头。
可用的维度和度量将在“订单项”的数据面板中列出。请注意,“探索”会自动为您生成有效且性能良好的 SQL 查询。
在 Order Items > Dimensions(订单项 > 维度)下,点击 Order ID(订单 ID)和 User ID(用户 ID)。
在 Order Items > Measures(订单项 > 度量)下,点击 Order Count(订单数)和 Total Revenue(总收入)。
点击运行,查看结果。
请花点时间检查查询结果,确保返回的是您需要的结果。在本例中,请求正确返回了订单 ID、用户 ID、与每个订单关联的商品数量以及每个订单的总收入。
点击运行(页面右上角)旁边的设置 (),然后点击获取 LookML。
点击派生表,并将 LookML 代码复制到计算机剪贴板。您需要将此 LookML 代码粘贴到此原生派生表的新视图文件中。
在新标签页中打开新的 Looker 窗口。
在 Looker 导航菜单中,点击开发标签页,然后选择 qwiklabs-ecommerce LookML 项目。
在文件浏览器旁边,点击添加文件或文件夹 ()。
点击创建视图。
对于文件名,输入 order_details_summary。
点击创建。
请注意,order_details_summary 视图的新视图文件是在 views 文件夹之外创建的。
点击 views 旁边的箭头,查看视图列表。
点击 order_details_summary.view 并将其拖到 views 文件夹下。
点击 order_details_summary.view,查看原生派生表的视图文件。
删除视图文件中的所有自动生成的 LookML。
粘贴您复制的本地派生表的 LookML 代码。
将自动生成的视图名称(例如 add_a_unique_name_1623275538)替换为 order_details_summary。您的视图文件应如下所示:
请注意,Looker 建议包含模型文件,但这些行已被注释掉。最佳做法是将模型文件的行注释掉。原因是模型文件几乎总是包含其他文件,因此,如果您有很多相互包含的文件,则可能会在模型中创建循环依赖项。这可能会导致语法验证错误。
现在,您可以使用名为 order_details_summary 的新视图创建新的维度和度量,将其联接到模型文件中的“探索”,和/或完成 Git 工作流,将更改发送到生产环境。
现在,您不会将其联接到“探索”,而是对 SQL 派生表执行此操作。
点击验证 LookML,然后点击提交更改并推送。
添加提交消息,然后点击提交。
最后,点击部署到生产环境。
点击检查我的进度以验证是否完成了以下目标:
在本部分中,您将检查并测试新的派生表。首先,您需要将此“探索”与模型文件中的 order_items“探索”定义联接,然后使用 Order Items“探索”来确认将更改推送到生产环境后业务用户会看到什么。
请注意,虽然您不需要为原生派生表完成最后这些步骤,但无论视图是为 SQL 派生表还是原生派生表创建的,将视图联接到“探索”的过程都是相同的。
在同一页面中,点击 model 文件夹中的 training_ecommerce.model 文件,修改其内容。
找到 explore: order_items 定义。请注意,实验中已经有定义的多个联接,例如 users 视图的联接。
explore: order_items 定义中,在现有 users 联接的上方,添加一个新的 order_details 联接,并指定:sql_on 参数将联接字段标识为 order_id。relationship 参数用于标识 order_items 中可能存在 order_id 的多个实例,但 order_details 中每个 order_id 只有一个实例,该表以每个订单一行摘要的形式显示。
在 Looker 导航菜单中,点击探索。
在 E-Commerce Training(电子商务培训)下,点击订单项。
点击订单详情旁边的箭头。
在 Order Details > Dimensions(订单详情 > 维度)下,点击 Order ID(订单 ID)、Order Item Count(订单商品数量)、Order Revenue(订单收入)和 User ID(用户 ID)。
点击运行,查看结果。
点击 SQL 标签页,查看 Looker 生成的 SQL 查询。
请注意由 WITH 子句标识的通用表表达式 (CTE)。这种原生派生表被认为是临时表,因为它是在运行时作为 CTE 生成的,而不是存储在底层数据库中。
派生表也可以是永久性的,这意味着它们存储在底层数据库中。如需详细了解永久性派生表,请查看创建永久性派生表 (PDT) 文档。
在下一部分中,我们将探讨如何保留派生表,以便将它们写回数据库。
training_ecommerce.model 文件。点击验证 LookML,然后点击提交更改并推送。
添加提交消息,然后点击提交。
最后,点击部署到生产环境。
点击检查我的进度以验证是否完成了以下目标:
到目前为止,您在示例中用到的派生表都是临时表,这意味着 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_for 与 sql_trigger_value 结合使用,以确保能在 PDT 中捕获到数据更新,或者直接使用 datagroup_trigger 或 sql_trigger_value。
在此任务中,您将使用参数 datagroup_trigger 来保留原生派生表。该参数会根据模型文件中预定义的数据组(缓存政策)重建永久性派生表。
对于名为 order_details_summary 的原生派生表,您添加 training_ecommerce_default_datagroup 作为 datagroup_trigger,以便持久派生表使用 training_ecommerce.model 中的 training_ecommerce_default_datagroup 内提供的规则每小时重建模型中定义的所有对象。
在 Looker 导航菜单中,点击开发标签页,然后选择 qwiklabs-ecommerce LookML 项目。
点击 views 旁边的箭头,查看视图列表。
点击 order_details_summary.view,查看原生派生表的视图文件。
在 derived_table 定义中,在 explore_source: order_items 的右括号 (}) 后添加新行,并粘贴以下代码:
在 Looker 导航菜单中,点击探索。
在 E-Commerce Training(电子商务培训)下,点击订单项。
点击订单详情旁边的箭头。
在 Order Details > Dimensions(订单详情 > 维度)下,点击 Order ID(订单 ID)、Order Item Count(订单商品数量)、Order Revenue(订单收入)和 User ID(用户 ID)。
点击运行,查看结果。
点击 SQL 标签页,查看 Looker 生成的 SQL 查询。
现在,派生表已经变为永久性的,之前由 WITH 子句标识的 CTE 已不存在,而是被 SELECT 语句取代。该语句用于查询 order_details_summary 永久性派生表中的字段。
order_details_summary 文件。点击验证 LookML,然后点击提交更改并推送。
添加提交消息,然后点击提交。
最后,点击部署到生产环境。
在本实验中,您学习了如何在 LookML 中创建 SQL 派生表和原生派生表,以定义底层数据库中尚不存在的新表。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2024 年 4 月 22 日
本实验的最后更新时间:2021 年 10 月 11 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验