在 Looker 中排查数据模型问题

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

GSP1019

Google Cloud 自学实验的徽标

概览

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

在本实验中,您将学习如何在 Looker 中使用 SQL Runner、LookML 验证器和内容验证器来诊断 LookML 代码并排查问题。

您将执行的操作

  • 使用 SQL Runner 探索数据表并排查 SQL 查询问题。
  • 使用 LookML 验证器来验证定义的对象和关系的语法。
  • 诊断并解决探索查询中的错误消息。
  • 诊断并解决运行内容验证器时出现的错误消息。

前提条件

需要熟悉 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 实例。

用于排查 LookML 代码问题的工具和常见应用场景

在本部分中,您将了解可用于对 LookML 代码进行问题排查的不同工具和方法,以及每种工具和方法的常见应用场景。

注意:本实验会在每个任务中模拟 LookML 对象的语法和定义错误,帮助您了解如何排查在 Looker 实例中可能遇到的错误。请务必完成整个实验,以了解正确的语法并完全解决错误,然后再将更改推送到生产环境。

LookML 验证器

LookML 验证器用于执行完整的模型验证。有些错误(例如因缺少联接而导致的无效字段引用)需要全面审查模型,因此只有在运行 LookML 验证器时才会显示。LookML 验证器会检查模型中的所有 LookML 代码,比如说对象定义(例如维度和度量)的语法以及定义的关联(例如联接)。不过,它不会检查 LookML 对象的 SQL 参数(例如 SQL 派生表)。

在探索中运行查询

定义新的 LookML 对象后,您可以在“探索”中运行查询。这有助于对 LookML 代码进行问题排查,因为它会显示底层数据库提供的 SQL 错误(例如权限不足、SQL 对象引用不正确或聚合无效)。

SQL Runner

SQL Runner 提供了一种直接访问数据库的方式,这也是一个实用工具,可用于检查查询中的 SQL 错误。您可以在这里测试要包含在 LookML 对象的 SQL 参数中的自定义 SQL。您还可以查看数据库表列表,运行临时查询,为 SQL 派生表编写查询等。

内容验证器

内容验证器会验证 Look 和信息中心对 LookML 模型、探索、视图和字段的所有引用,并显示您的内容对未知 LookML 对象的任何引用错误。它还会检查实例中创建的 Look 和信息中心,以确保它们对 LookML 对象的引用有效(例如,探索中特定维度或度量的名称可能会随时间而变化)。

Looker 错误目录

您仍然不确定在哪里可能会看到特定错误?Looker 错误目录提供了常见错误消息列表、根本原因,以及消息在 Looker 中的显示位置。

任务 1. 使用 SQL Runner 探索可用数据并排查 SQL 查询问题

SQL Runner 可直接访问数据库连接中的底层表。在 SQL Runner 中,系统会列出可用的数据表和列,您可以对数据运行自定义 SQL 查询。在此任务中,您将在 SQL Runner 中创建一个新的 SQL 派生表,在此之前,您需要探索可用数据并对 SQL 查询进行问题排查。

在 SQL Runner 中连接到 BigQuery 数据集

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

  2. 开发标签页上,选择 SQL Runner

  3. 点击设置 (“设置”齿轮图标),然后点击搜索公开项目
    “项目”框现在为空。

  4. 输入 cloud-training-demos,然后按 Enter 键。

  5. 在“数据集”字段中,选择 looker_ecomm
    系统会显示此 BigQuery 数据集中可用表的列表。

  6. 将以下查询添加到 SQL 查询窗口中:

SELECT orders.user_id as user_id ,COUNT(*) as lifetime_orders ,SUM(orders.order_price) as lifetime_sales FROM cloud-training-demos.looker_ecomm.orders GROUP BY user_id LIMIT 10 注意:提供的 SQL 查询包含不正确的信息,您将在后续步骤中进行问题排查。
  1. 点击运行
    系统会显示以下错误消息:
Query execution failed: - Not found: Table cloud-training-demos:looker_ecomm.orders was not found in location US

识别 SQL 查询的正确表名

  1. 下的表名称列表中,选择包含订单信息的表。

  1. 更新 SQL 查询中的表名:
SELECT order_items.user_id as user_id ,COUNT(*) as lifetime_orders ,SUM(order_items.order_price) as lifetime_sales FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id LIMIT 10
  1. 点击运行
    系统会显示一条新的错误消息:
Query execution failed: - Name order_price not found inside order_items at [5:19]
  1. 下,点击 order_items
    系统会显示表列的列表。

  1. 更新 SQL 查询中的列名:
SELECT order_items.user_id as user_id ,COUNT(*) as lifetime_orders ,SUM(order_items.sale_price) as lifetime_sales FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id LIMIT 10
  1. 点击运行
    查询结果已成功返回。现在,您可以将此查询保存为 SQL 派生表。

将查询另存为 SQL 派生表

  1. 点击运行旁边的设置 (“设置”齿轮图标),然后点击添加到项目

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

  3. 在“视图名称”部分,输入 user_order_lifetime

  4. 点击添加

  5. 在文件浏览器中,将 user_order_lifetime.view 拖到 views 文件夹中。

  6. user_order_lifetime.view 文件中,从 sql 参数中删除 LIMIT 10 对应的代码行。

注意:您目前没有为视图定义 primary_key
  1. 点击保存更改,然后点击验证 LookML
    未发现任何 LookML 错误,您的文件应类似于以下内容:

user_order_lifetime.view 文件的第 1 行到第 21 行,以及右侧显示的“项目健康状况”窗格

  1. 找到 training_ecommerce.model 文件。

  2. explore: events 定义中,在 join: event_session_facts 前另起一行,使用以下代码定义新联接:

join: user_order_lifetime { type: left_outer sql_on: ${events.user_id} = ${user_order_lifetime.user_id};; relationship: many_to_one }
  1. 点击保存更改,然后点击验证 LookML。 没有 LookML 错误。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 使用 SQL Runner 探索可用数据并排查 SQL 查询问题

任务 2. 使用 LookML 验证器测试语法并验证模型中定义的关系

LookML 验证器可帮助您测试已定义对象(例如维度和度量)的语法,并验证模型中的关系(例如联接)。在此任务中,您将创建一个 LookML 语法不正确的新维度,该维度引用了另一个尚未联接到“探索”的基本视图的视图。然后,您将使用 LookML 验证器来识别并纠正这两个问题。

通过引用另一个视图中的维度来创建新维度

  1. qwiklabs-ecommerce 项目中,打开 users.view

  2. 找到最后一个维度,并添加以下代码(大约在第 88 行)以创建一个新维度:

dimension: average_sales { type: ${number} sql: user_order_lifetime.lifetime_sales / user_order_lifetime.lifetime_orders ;; value_format_name: usd }

请注意,新维度引用了新创建的视图 user_order_lifetime 中的维度。

注意:此 LookML 代码包含错误的语法,您将在后续步骤中排查此问题。
  1. 点击保存更改,然后点击验证 LookML
    系统显示了四个不同的错误:
  • 第一项将语法错误的位置标识为“Invalid LookML syntax near line 89”(第 89 行附近存在无效的 LookML 语法)
  • 最后一项指出了具体的语法错误:“Expecting ‘keyword’, ‘}’, got ‘identifier’

该视图现在包含无效语法,不会再被视为有效视图;因此,模型文件中会发现更多错误,因为找不到该视图:

  • “联接名称必须与视图名称匹配”和“找不到名为 users.id 的字段”

在视图文件中更正新维度的语法后,这些模型文件错误也会得到解决,因为视图已经有效。

识别并更正新维度中的语法错误

现在,您需要排查 LookML 代码中的错误。

  1. 查看 users.view 文件中的其他维度。

  2. 查看有关维度、过滤条件和参数类型的文档。

  1. 更新该维度的 LookML 代码:
dimension: average_sales { type: number sql: ${user_order_lifetime.lifetime_sales} / ${user_order_lifetime.lifetime_orders} ;; value_format_name: usd }
  1. 点击保存更改,然后点击验证 LookML

    因为语法已更新,视图已经有效,模型错误也已解决。不过,现在出现了一个新错误:

users.view 文件的第 79 行到第 100 行,以及显示 LookML 错误“无法访问 user_order_lifetime 视图”的 LookML 验证窗格

  1. 查看 Looker 错误目录中有关无法访问的视图的错误消息。
    有几种可能的选项可供调查:

    • 该视图不存在。
    • 视图未正确联接到探索。
  2. 查看文件浏览器中的视图列表。请注意,名为 user_order_lifetime 的视图实际上存在于文件浏览器中。

  3. 打开并查看 training_ecommerce.model

    请注意,名为 user_order_lifetime 的新视图未联接到模型文件中探索的基本视图。另请注意,users.view 已联接到 order_itemsevent 探索。因此,user_order_lifetime 的新视图也必须联接到这两个探索中,才能在 users.view 中成功定义新维度。

  4. explore: order_items 定义中,在 join: users 前另起一行,使用以下代码定义新联接:

join: user_order_lifetime { type: left_outer sql: ${order_items.user_id} = ${user_order_lifetime.user_id};; relationship: many_to_one } 注意:其中一个联接定义有误,您将在下一部分中排查此问题。
  1. 点击保存更改,然后点击验证 LookML

在开始下一项任务时,请将 IDE 的浏览器标签页保持打开状态。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 创建新维度

任务 3. 使用“探索”查询窗口诊断缺失的对象和错误消息

测试 LookML 代码更改的简单方法是在“探索”中运行查询,这样您就可以看到业务用户将如何查看修改后的代码并与之交互。通过运行探索查询,您可以识别缺失或无效的 LookML 对象(例如缺失的 primary_key),并查看底层数据库提供的 SQL 错误,例如权限不足或 SQL 对象引用不正确(例如联接定义不正确)。

在此任务中,您将在“探索”中运行查询,以识别定义不正确的联接和缺失的度量。您还要更正新定义的联接的 LookML,并向新视图添加 primary_key,以确保聚合(即度量)成功。

查看“探索”中的新视图

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

  2. 依次点击探索 > Order Items(订单项)

  3. 展开 User Order Lifetime(用户订单生命周期)视图。

其中显示了三个维度:lifetime_orderslifetime_salesuser_id,但没有度量。

在继续执行后续步骤时,请勿关闭此浏览器标签页。

识别并更正视图中聚合的缺失参数

  1. 返回 Looker IDE 的浏览器标签页,然后返回 user_order_lifetime.view。探索中应显示一个名为 count 的度量。

  2. 查看有关对称聚合要求的文档。第一个要求是,联接中涉及的所有视图都需要定义 primary_key

  3. 再次查看 user_order_lifetime.view
    未定义 primary_key

  1. user_order_lifetime.view 中,更新 user_id 维度,将其定义为视图的 primary_key
dimension: user_id { primary_key: yes type: number sql: ${TABLE}.user_id ;; }
  1. 点击保存更改,然后点击验证 LookML

  2. 返回“Order Items”(订单项)探索的浏览器标签页,然后刷新页面。

  3. 展开 User Order Lifetime(用户订单生命周期)视图。
    为视图定义 primary_key 后,现在会显示“计数”度量。

在接下来的步骤中,您将继续在“Order Items”(订单项)探索中测试在 users.view 中定义的新维度(平均销售额),该维度依赖于 user_order_lifetime.view 中的维度。

运行探索查询来测试新维度

  1. 用户 > 维度下,点击 Average Sales(平均销售额),然后点击运行

系统会显示一条错误消息,以及探索发送到底层数据库的 SQL 查询。错误消息指出了第 13 行的问题:Query execution failed: - Syntax error: Expected end of input but got identifier "order_items" at [13:1]

  1. 数据窗格中,打开 SQL 标签页,更轻松地查看失败的查询,并查看第 13 行:
order_items.user_id =user_order_lifetime.user_id

虽然没有提供太多关于错误的信息,但请记住,您还将这个新视图联接到了“Events 探索”。在接下来的步骤中,您将在 Events 探索中运行相同的查询,以测试该探索中的视图。

  1. 将此浏览器标签页中的 Order Items 探索保留打开状态,并在新标签页中打开新的 Looker 窗口。

  2. 依次点击探索 > Events

  3. 用户 > 维度下,点击 Average Sales(平均销售额),然后点击运行

  4. 在“数据”窗格中,打开 SQL 标签页,查看成功执行的查询。

  5. 查看此查询中的第 13 行。

    Order Items 探索中的查询不同,第 13 行的查询语法指定了 eventsuser_order_lifetime 之间的 join

LEFT JOIN user_order_lifetime ON events.user_id = user_order_lifetime.user_id

识别并修正模型中的无效参数

  1. 返回 Looker IDE 的浏览器标签页,然后打开 training_ecommerce.model

  2. 查看 order_items 探索和 events 探索中 user_order_lifetime 的联接。

  3. 要审核参数,请参阅按功能划分的 LookML 参数参考文档

  1. explore: order_items 定义中,更新 user_order_lifetime 的联接:
join: user_order_lifetime { type: left_outer sql_on: ${order_items.user_id} = ${user_order_lifetime.user_id};; relationship: many_to_one }
  1. 点击保存更改,然后点击验证 LookML
    没有 LookML 错误。

  2. 返回到 Order Items(订单项)探索的浏览器标签页,然后刷新页面。

现在,您已在 order_items 探索中正确定义了 user_order_lifetime 的联接,查询可以成功运行。

将探索查询另存为 Look

  1. 点击 Average Sales(平均销售额)列一次,按降序排序。

  2. 点击其他维度:IDStateCountryAge,以展开查询。

  3. 对于行数限制,输入:10

  4. 点击运行

  5. 展开“可视化图表”窗格,然后选择可视化。

  6. 点击设置 (“设置”齿轮图标)。

  7. 点击保存 > 作为 Look

  8. 将 Look 命名为 Top 10 Users With Highest Average Sales(平均销售额最高的前 10 位用户)。

  9. 点击保存并查看 Look
    您的可视化图表应如下所示:

前 10 名平均销售额 Look,在 5 个列标题下显示了 10 行数据:平均销售额、ID、州、国家/地区和年龄

  1. 关闭“探索”的另一个标签页,并保持此浏览器标签页处于打开状态,然后开始执行下一项任务。

点击检查我的进度以验证是否完成了以下目标: 创建 Look

任务 4. 在 LookML 对象发生更改后,使用内容验证器测试和更新内容

内容验证器可帮助您检查实例中创建的 Look 和信息中心,确保它们对 LookML 对象的引用有效。如果维度、度量、视图、探索或模型的名称已修改,此功能尤其有用。请查看文档使用内容验证器之前,详细了解该工具可能会对实例中的内容和对象产生哪些影响。

在此任务中,您将修改 LookML 对象(例如维度)的名称,使其更便于用户使用,然后使用内容验证器验证并更新现有内容(例如 Look)中对 LookML 对象的引用。

修改现有维度名称

  1. 打开 users.view,找到名为 average_sales 的维度,然后修改该维度的名称,使其对业务用户更具针对性:
dimension: average_order_price { type: number sql: ${user_order_lifetime.lifetime_sales} / ${user_order_lifetime.lifetime_orders} ;; value_format_name: usd }
  1. 点击保存更改,然后点击验证 LookML
    没有 LookML 错误。

  2. 请勿关闭 IDE 的浏览器标签页,返回 Look 的浏览器标签页并刷新页面。

请注意,现在有一条警告:“users.average_sales”在“Order Items”(订单项)中已不存在,或者您无权访问,因此它会被忽略

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

  2. 依次前往开发 > 内容验证器

  3. 点击验证

“错误”标签页处于活动状态,您在上一项任务中创建的 Look Top 10 Users With Highest Average Sales(平均销售额最高的 10 位用户)存在错误,即“Unknown field "users.average_sales"

  1. 点击在所有内容中查找和替换

  2. 对于类型,选择字段

  3. 对于字段名称,输入 users.average_sales

  4. 替换字段名称中,输入 users.average_order_price

  5. 点击替换字段名称

  6. 点击确定

  7. 点击验证
    “错误”标签页现在为空,因为引用该维度的所有内容(在本例中,是名为 Top 10 Users With Highest Average Sales(平均销售额最高的 10 位用户)的 Look)的维度名称都已更新。

  8. 返回到 Look 的浏览器标签页,然后刷新页面。
    Look 已更新并成功呈现可视化图表,因此您现在可以将 LookML 更改推送到生产环境。

  9. 返回 IDE 的浏览器标签页。

  10. 点击验证 LookML。应该没有 LookML 错误。

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

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

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

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

点击检查我的进度以验证是否完成了以下目标: 修改现有维度的名称

恭喜!

在本实验中,您首先使用 SQL Runner 排查了有问题的 SQL 查询,并使用 LookML 验证器验证了已定义对象和关系的语法。然后,您使用“探索”查询窗口诊断了缺失的对象和错误消息,并在更改 LookML 对象后,使用内容验证器测试和更新了内容。

后续步骤/了解详情

Google Cloud 培训和认证

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

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

上次测试实验的时间:2025 年 2 月 9 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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