使用 Extends 实现 LookML 代码模块化

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

GSP936

Google Cloud 自学实验的徽标

概览

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

在本实验中,您将学习如何通过扩展视图和探索实现 LookML 代码模块化。

前提条件

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

学习内容

  • 介绍如何使用 Extends 实现 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 实例。

什么是 LookML Extends?

借助 Extends,您可以为 LookML 对象创建副本,然后将这些副本集成到其他 LookML 对象中,并对其进行独立修改(不影响原始 LookML 对象),从而实现代码模块化。在 Looker 中,您可以扩展视图、探索和 LookML 定义的信息中心。通过实现代码模块化,Extends 允许您将代码片段视为模块或单元,然后您可以基于这些模块或单元来扩展模型。

为何使用 Extends?

理由包括:编写避免重复代码 (DRY) 代码,更方便快捷地进行更改,确保模型一致性,更轻松地管理不同字段集

Extends 可帮助您编写 DRY 代码。通过复制现有的对象和代码段,您可以更轻松地添加或修改逻辑。随着组织和应用场景规模的变化,这对于扩缩模型至关重要。此外,您无需一直手动重写代码,因此还可以最大程度提高模型的一致性。它还让管理不同用户群组的字段访问权限变得更加轻松,这对可伸缩性也很重要。

LookML 视图 Extends

如前所述,您可以扩展的对象之一是 LookML 视图。通常,这样做是为了添加更多字段和/或更新现有字段的逻辑。另一个用例是更改 sql_table_name 参数中指定的数据库表。

流程图:概述了向视图添加字段与更改视图的表

LookML 探索 Extends

您可以扩展的另一个对象是探索。您可能有多个必须始终联接在一起的表,尤其是在标准化程度更高的数据库架构中。为了避免重复编写相同的联接,您可以创建一个已经将其联接在一起的“基本”探索,然后对其进行扩展,以创建需要联接更多视图的其他探索。或者,您可能需要同一组联接的视图,但新探索从不同的基本视图开始。

流程图:概述了向探索添加视图与更改探索的基本视图

Extends 的执行包括四个步骤

步骤包括复制、合并、解决冲突和完成

探索背后的实现过程:

  1. Looker 会复制要扩展的 LookML 对象。
  2. 复制的对象(或扩展的对象)会与新的或修改后的定义合并。
  3. 如果检测到任何冲突(修改定义时可能会发生),则由扩展对象控制。
  4. 扩展对象可以像任何其他对象一样在 LookML 模型中使用。
注意:虽然实现 Extends 的过程很简单,但了解这些细节有助于您在遇到意外行为时排查问题。

任务 1. 扩展视图以添加另一个视图中的列

您无需在多个视图中复制/粘贴相同的代码,只需创建一个包含常用维度和度量定义的集中式视图。然后,通过使用 Extends,您可以将这些维度和度量集成到多个视图中。您只需使用 Extends 的特定参数来标识您希望 Looker 从中复制的视图。

从业务角度来看,这非常实用,因为您拥有了一个集中式代码库,可供多个团队重复使用,而且这些团队可以扩展核心代码,并根据自己的需求进行自定义。将 location 维度抽象化的好处是,您只需更新一次,它就会传播到从该 location 视图扩展的任何视图。

在此任务中,您将创建一个包含 location 维度(例如 city、country)的新视图,该视图可以通过扩展其他视图(例如 users 和 events 视图)来实现重复使用。

创建新的视图

  1. 点击切换按钮进入开发模式

  2. 开发标签页中,选择 qwiklabs-ecommerce LookML 项目。

  3. 点击“文件浏览器”旁边的 (+),然后选择创建视图

  4. 将该视图命名为 location,并将其拖动到 views 文件夹下,然后向其中添加以下代码:

view: location { extension: required dimension: city { type: string sql: ${TABLE}.city ;; } dimension: state { type: string sql: ${TABLE}.state ;; map_layer_name: us_states } dimension: zip { type: zipcode sql: ${TABLE}.zip ;; } dimension: country { type: string map_layer_name: countries sql: ${TABLE}.country ;; } dimension: latitude { type: number sql: ${TABLE}.latitude ;; } dimension: longitude { type: number sql: ${TABLE}.longitude ;; } }

此视图文件包含您要在其他视图中重复使用的维度定义:citycountrylatitudelongitudestatezip

请注意第 2 行 (extension: required),这表示此视图“无法与其他视图联接”,因此用户将无法看到此视图。 如需使用此视图,您必须使用 extends 参数将其集成到另一个视图中,您将在下一部分中执行此操作。

另请注意,与其他视图不同,您无需在视图定义中添加参数 sql_table_name 来标识要使用哪个表的数据。此视图将使用在下一部分中扩展的视图中指定的表。

  1. 点击保存更改,然后点击验证 LookML
    未发现任何 LookML 错误,您的文件应类似于以下内容:

打开且已更新的 location.view 文件,其中包含 31 行代码

添加 Extends

  1. 打开 users.view 文件。

  2. 在文件顶部的第 1 行另起一行,添加以下代码,指明 users 视图正在使用 location 视图进行扩展:

include: location.view
  1. 在第 3 行的 sql_table_name 上方,添加以下代码:
extends: [location] 注意:由于添加了 Extends,sql_table_name 参数会标识要用作数据源的表,该数据源适用于文件中现有的对象以及通过扩展而从 geography 添加的对象。
  1. 移除以下现有维度定义:citycountrylatitudelongitudestatezip(这是文件中的现有顺序)。 这些维度不是在 users.view 文件中显式定义的,而是通过从 location.view 扩展集成进来的。

  2. 点击保存更改,然后点击验证 LookML

  3. 打开 event.view 文件。

  4. 在文件顶部的第 1 行添加以下代码:

include: location.view
  1. 在第 3 行的 sql_table_name 上方,添加以下代码:
extends: [location]
  1. 与处理 users 视图时一样,移除以下现有维度定义:citycountrylatitudelongitudestatezip

  2. 点击保存更改,然后点击验证 LookML

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

打开且已更新的 events.view 文件,其中包含 25 行代码

在“Order Items”探索中测试用户和事件的扩展视图

  1. 前往 Order Items 的探索页面。

  2. Users 视图中,选择 CityCountryLatitudeLongitudeStateZip 维度。

  3. 点击运行

尽管您已从 users.view 文件中移除了这些维度(city、country、latitude、longitude、state 和 zip)的定义,但您仍然可以查看和使用它们,因为它们是使用 location.view 文件中的 extend 从 users.view 文件中添加的!

显示 users.view 和 location.view 文件中各列的“order items”探索可视化图表

  1. 前往 Events 探索

  2. Events 视图中,选择 CityCountryLatitudeLongitudeStateZip 维度。

显示 events.view 文件中维度的“order items”探索可视化图表

同样,尽管您已从 events.view 文件中移除了这些维度的定义,但您仍然可以查看和使用它们,因为它们是使用扩展添加到 events.view 文件中的。

  1. 返回 Looker IDE 中的 events.view 文件。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 扩展视图以添加另一个视图中的列

任务 2. 扩展探索以添加另一个探索中的联接

您无需在模型文件的多个探索中复制/粘贴相同的联接,只需创建一个包含探索中最常用联接的基本探索。然后,您可以使用 Extends 重复使用该基本探索,以定义和自定义在模型文件中定义的其他探索。

一个常见的业务应用场景是创建一个核心探索,然后使用该探索为组织内的特定用户群组/团队创建其他探索。

在本部分中,您将创建一个基本探索,其中包含多个业务团队所需的所有视图的联接,然后使用 Extends 为多个团队重复使用和自定义该基本探索。

  1. 找到 training_ecommerce.model 文件。

  2. order_items 探索定义(大约在第 43 行)之后,使用以下代码创建一个名为 base_events 的新基本探索:

explore: base_events { extension: required join: event_session_facts { type: left_outer sql_on: ${events.session_id} = ${event_session_facts.session_id} ;; relationship: many_to_one } join: users { type: left_outer sql_on: ${events.user_id} = ${users.id} ;; relationship: many_to_one } }

再次强调,请注意 extension: required 这一行,这意味着此探索对用户不可见。您的文件应如下所示:

打开的 training.ecommerce.model 文件,其中突出显示了添加的 base_events 探索代码

接下来,您将修改现有 events 探索的定义,以使用 base_events 中的视图对其进行扩展。

  1. events 探索中,移除 event_session_factsusers 的现有联接。

这些联接视图是通过下一步中添加的代码,从 base_events Explore 集成而来的。注意保留了 event_session_funnel 的联接定义,以便针对一组特定用户自定义此探索。您的文件应如下所示:

打开的 training.ecommerce.model 文件,其中突出显示了更新的第 43 行至第 56 行

  1. events 探索定义的第一行下方,添加以下代码:
description: "Start here for Event analysis" fields: [ALL_FIELDS*] from: events view_name: events extends: [base_events] 注意:新添加的行提供了“探索”信息按钮的说明,指明了要包含哪个视图文件中的哪些字段(所有字段),并指定了用于扩展 events 探索的探索。

events 探索的最终定义应如下所示:

training.ecommerce.model 文件,其中包含已更新的 events 探索代码

注意:fromview_name 都指向 events 视图,那么为什么要把它们都包含在内呢?from 可确保您使用的是名为 events 的原始视图(而不是视图的别名或扩展视图),而 view_name 是视图文件名,可以是别名。
  1. 在修改后的 events 探索定义下方,使用以下代码添加名为 conversions 的新探索:
explore: conversions { description: "Start here for Conversion Analysis" fields: [ALL_FIELDS*, -order_items.total_revenue_from_completed_orders] from: events view_name: events extends: [base_events] join: order_items { type: left_outer sql_on: ${users.id} = ${order_items.user_id} ;; relationship: many_to_many } }

第 2-6 行提供了“探索”信息按钮的说明,指明了要包含哪个视图文件中的哪些字段(除了 order items 视图中的 total_revenue_from_completed_orders 度量之外的所有字段),并指定了用于扩展此探索的探索(即用于扩展 events 探索的同一 base_events 探索)。

  1. 点击保存更改,然后点击验证 LookML
    未发现任何 LookML 错误,您的文件应类似于以下内容:

已添加 conversions 探索代码的 training.ecommerce.model 文件

现在,您可以测试新探索了。找到每个探索(EventsConversions),留意其中包含哪些视图。由于这些探索共享一组核心视图,但又通过额外的视图进行了自定义,因此每个探索服务于不同的用户群体。

  1. 找到 Events 探索,其中包含基本探索(EventsEvent Session FactsUsers)中联接的视图,以及 Event Session Funnel 视图。

“Events 探索”页面,其中“所有字段”标签页下列出了自定义字段、Event Session Facts、Events Session Funnel、Events 和 Users

  1. 如需查看说明,请将指针悬停在 Events 旁边的信息 (信息按钮) 上。

  2. 前往 Conversions 探索,其中包含基本探索(EventsEvent Session FactsUsers)中联接的视图,以及 Order Items 视图。

“Conversations”页面,其中“所有字段”标签页下列出了自定义字段、Event Session Facts、Events、Order Items 和 Users

  1. 如需查看说明,请将指针悬停在 Conversions 旁边的信息 (信息按钮) 上。

  2. 查看 Order Items 视图中的度量,其中未列出 total_revenue_from_completed_orders

  3. 返回 Looker IDE 中的 training_ecommerce.model 文件。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 扩展探索以添加另一个探索中的联接

恭喜!

在本实验中,您通过扩展 users 和 events 视图创建了一个包含 location 维度的新视图,创建了一个包含多个视图的联接的基本探索,并使用 Extends 为多个团队和用户重复使用并自定义了基本探索。

后续步骤/了解详情

Google Cloud 培训和认证

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

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

上次测试实验的时间:2023 年 9 月 6 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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