合并不同探索的结果

合并结果是一项查询后处理功能,如果不谨慎使用,可能会导致 Looker 实例资源过多,导致 Looker 实例对所有用户的响应速度变慢。最佳实践是在 LookML 中定义函数和逻辑,它会生成由数据库处理的 SQL。如需详细了解如何优化 Looker 性能,请查看优化 Looker 性能最佳实践页面。

Looker 中的探索由 Looker 开发者设计,利用数据字段和表之间定义的关系,以最有效的方式组合数据库表中的数据。因此,最好使用单个“探索”工具来检查数据。

不过,有时您的 Looker 开发者可能尚未创建您所需的关系或遇到技术限制。在这些情况下,合并结果可让您合并不同探索(即使来自不同模型或项目)的结果,以创建数据表格作为探索可视化图表的依据。您可以使用合并结果作为概念验证,以进一步开发和定义 LookML 项目和模型。

了解合并结果

合并查询时,您首先要基于单个探索创建一个查询,然后将其他查询与第一个查询组合起来。

默认情况下,第一个查询被视为主查询。这是一个重要的概念,因为当 Looker 与数据匹配以创建合并结果时,它会将每个添加的查询与主查询(而不是任何其他已添加的查询)进行匹配。因此,每当添加查询时,您都需要添加可与主查询中的某个维度匹配的维度。

例如,请考虑以下查询。

主查询会返回以下结果:

产品类别 商品数量
有效 5
牛仔裤 9
正装 3

辅助查询返回以下结果:

产品类别 库存商品数量
有效 11
牛仔裤 16
正装 6

如果您在 Products Category 字段中合并这些查询,Looker 会生成以下合并结果:

产品类别 商品数量 库存商品数量
有效 5 11
牛仔裤 9 16
正装 3 6

合并结果不会执行实际的 SQL 联接。但是,对于熟悉 SQL 联接的用户,合并结果功能会采用与左联接类似的方式合并多个探索的结果。所添加查询的结果会与主查询的结果合并,就好像它们被联接到主查询中一样。

您无需熟悉左联接的概念,即可了解合并结果的工作原理。实际上,下面的原因在于哪个查询是主要查询很重要:

如果一个查询没有匹配的数据值怎么办?

主查询很重要的另一个原因是 null 值在匹配维度中的处理方式:

  • 如果某行存在于主查询中,但不存在在其他查询中,则对于该行,所添加查询的字段将为 NULL。

  • 如果某行存在于添加的查询中,但不在主查询中,则此行将根本不会显示在结果中。

为说明这些示例,请考虑以下示例查询。

主查询会返回以下结果:

产品类别 产品部 商品数量
有效 儿童 522
有效 成人 545
连衣裙 成人 878
正装 成人 349

辅助查询返回以下结果:

产品类别 产品品牌名称 库存商品数量
有效 品牌 1 223
连衣裙 品牌 2 80
连衣裙 品牌 3 3
牛仔裤 品牌 3 8
牛仔裤 品牌 2 19

如果您在 Products Category 字段中合并这些查询,Looker 会生成以下合并结果:

产品类别 产品部 产品品牌名称 商品数量 库存商品数量
有效 成人 品牌 1 545 223
有效 儿童 品牌 1 522 223
连衣裙 成人 品牌 2 878 80
连衣裙 成人 品牌 3 878 3
正装 成人 349

主要查询有 Formalwear 行,因此合并结果将显示此行。添加的查询没有 Formalwear 行,因此该查询的任何字段都将针对 Formalwear 显示 NULL (∅)。

添加的查询有两行 Jeans,但主查询没有。因此,这一行完全不会显示在合并结果中。

在此示例中,如果您切换主查询,使添加的查询成为新的主查询,Looker 会改为生成以下合并结果:

产品类别 产品品牌名称 产品部 库存商品数量 商品数量
有效 品牌 1 成人 223 545
有效 品牌 1 儿童 223 522
连衣裙 品牌 2 成人 80 878
连衣裙 品牌 3 成人 3 878
牛仔裤 品牌 2 19
牛仔裤 品牌 3 8

Looker 不再显示“正装”行,因为新的主查询中不存在这些行。但是,Looker 现在会显示 Jeans 行,并且这些行仅针对添加到主查询的查询中的维度和测量显示 NULL。

您也可以参阅为什么我的辅助合并结果查询中有 null 值?“最佳做法”页面,了解关于合并结果值缺失或为 null 的更多问题排查提示。

如果一个查询有多行具有相同值,会出现什么情况?

最后,由于处理具有匹配值的多行的方式,指定所需的主查询也很重要。如果添加的查询有两行或更多行的值与主查询中的某一行匹配,则系统会将主查询行重复相同的次数。

在以下示例中,added 查询有两行 Dresses。在合并结果中,主查询中的 Dresses 值出现两次,即所添加查询中的 Dresses 行各一次。

主查询会返回以下结果:

产品类别 产品部 商品数量
有效 儿童 522
有效 成人 545
连衣裙 成人 878
正装 成人 349

辅助查询返回以下结果:

产品类别 产品品牌名称 库存商品数量
有效 品牌 1 223
连衣裙 品牌 2 80
连衣裙 品牌 3 3
牛仔裤 品牌 3 8
牛仔裤 品牌 2 19

合并的结果查询会在 Products Category 字段中进行合并,返回以下结果:

产品类别 产品部 产品品牌名称 商品数量 库存商品数量
有效 成人 品牌 1 545 223
有效 儿童 品牌 1 522 223
连衣裙 成人 品牌 2 878 80
连衣裙 成人 品牌 3 878 3
正装 成人 349

请注意,在这种情况下,如果您切换主要查询,则仍然会有两行“服装”行,因为新指定的主要查询有两行“服装”结论是,当您合并查询时,结果的行数可能会多于主查询的行数,但行数绝不会减少。

合并查询

如需合并多个查询的结果,请按以下步骤操作:

  1. 创建第一个源查询(称为“主查询”)。
  2. 添加下一个源查询
  3. 检查这些查询的合并规则并运行合并
  4. 您可以选择

    • 对结果进行排序、透视和创建可视化图表。
    • 通过该网址重复使用和分享结果。
    • 通过修改源查询或添加源查询来修改结果。

创建主查询

如需合并多个查询的结果,请先按照以下步骤准备主要查询:

  1. 探索菜单中选择一项“探索”。
  2. 从字段选择器中选择感兴趣的维度和测量。请勿在此步骤中透视任何维度。

    这就是开始合并结果所需的全部操作。不过,您也可以使用一些高级探索方法来进一步优化查询。您可以:

  3. (可选)为数据添加过滤条件

  4. (可选)添加表格计算以创建临时指标。

  5. (可选)点击运行,查看主要查询的结果并测试过滤条件和表计算。

添加下一个源查询

创建主探索后,请按以下步骤添加其他来源查询:

  1. 在“探索”中,点击齿轮图标。
  2. 选择合并结果。此操作将打开选择探索窗口。
  3. 选择一个探索窗口中,点击您将在其中创建下一个查询的探索的名称。

    Looker 会在修改查询窗口中打开“探索”,您可以在其中构建要合并到主查询的新查询。

    为了合并查询,Looker 会在查询中查找值可以匹配的维度。请确保您的查询至少包含一个常见维度,且该维度的值可完全匹配。例如,如果两个查询都具有日期维度,但一个查询使用“2017-10-01”作为值,另一个查询使用“2017 年 10 月”作为值,那么 Looker 无法使用该维度来合并查询。

  4. 从字段选择器中选择感兴趣的维度和测量。请务必至少包含一个与主查询中的某个维度完全匹配的维度。请勿在此步骤中透视任何维度。

  5. (可选)添加过滤条件以缩小数据范围。

  6. (可选)合并表计算,根据查询字段创建新字段。

  7. (可选)点击运行,以查看源查询的结果并测试过滤条件和表计算。

  8. 点击保存,将该查询合并到您的主要查询中。

检查合并规则并运行合并

Looker 会自动查找最适合用于匹配查询的维度,并在合并规则部分显示这些匹配项。Looker 会显示每次合并将使用哪些字段。

  1. 查看 Looker 用于匹配查询的维度。(要了解如何更改这些规则,请参阅修改合并规则)。

  2. 点击运行以查看合并的查询结果。

请注意,源查询的所有表计算结果在合并结果中均显示为标准维度。

使用和修改合并结果

您可以使用合并结果执行以下操作:

  • 检查数据并对其进行排序,包括深入了解数据。不过,如果您深入探究用于合并这两个探索的维度,Looker 只会显示主“探索”中的深入分析字段。
  • 查看totals。Looker 会计算每个组成部分查询的总数,并在合并结果中使用这些总数。因此,显示的总数可能过高,这是因为您看到的是在结果合并之前计算出的总计数据。避免这种情况的一种方法是,针对每个查询对齐过滤器。
  • 创建可视化图表。
  • 在合并结果中透视维度,方法是从数据表维度列的齿轮菜单中选择数据透视。请注意,您无法透视源查询中的维度。

如需重复使用合并结果,您可以执行以下操作:

  • 使用浏览器网址分享结果。
  • 在浏览器中将网址添加为书签,以便日后再次运行同一合并查询。您无法将合并的结果保存为 Look。
  • 将合并结果以图块形式保存到信息中心(请参阅将合并结果保存到信息中心)。

如果要修改合并结果,您可以执行以下操作:

  • 如需合并其他探索中的查询,请点击添加查询按钮,然后按照相同的步骤操作。
  • 请修改源查询或配置查询的合并方式。如需了解详情,请参阅修改合并结果
  • 创建过滤条件:在创建和合并查询时,在源查询中添加这些过滤条件,或者在合并的结果页面中修改查询。请注意,您无法直接向合并结果添加过滤条件。

如果要清除缓存并从数据库中检索最新结果,请从合并结果窗口右上角的齿轮菜单中选择清除缓存和刷新选项。

如需下载合并的结果查询,您可以将查询保存到信息中心,然后以 PDF 或 CSV 文件的集合形式下载信息中心

修改合并结果

获得合并结果后,您可以对合并结果进行以下更改:

修改源查询

合并的结果窗口中,您可以点击左侧窗格中的查询名称,或在查询的齿轮菜单中选择修改,以返回并修改源查询。这些选项会将您带回 Edit Query 屏幕。

您可以添加或移除字段、添加表计算或更改源查询的过滤条件。点击保存以返回合并结果。

该查询的齿轮菜单还包含以下选项:

  • 重命名:指定在合并结果窗口中为该查询显示的其他名称。
  • 设为主要 (Make Primary):将查询设为合并结果的基础。请参阅了解合并结果,了解主查询的作用。
  • 删除:从合并结果中移除查询。(如果您想在删除某个查询后将其重新添加到合并结果中,可以使用浏览器中的返回按钮。)

修改合并规则

添加查询后,Looker 会自动查找维度,以用于将添加的查询与主要查询进行匹配。您添加的每个查询必须至少有一个维度,且该维度的值与主查询中的某个维度完全匹配。Looker 会在合并规则部分中显示这些匹配项,并说明哪些字段将用于合并查询。

您可以使用“合并规则”部分更改或添加 Looker 用于合并查询的字段。

  1. 使用下拉菜单查看用于匹配数据的其他维度选项。
  2. 如果有其他维度可用于匹配,Looker 会显示 + 添加维度。点击 + 添加维度可额外配置一组要在查询合并中使用的维度。
  3. 如果您不想匹配这两个维度的数据,请点击 X

切换主要查询

合并查询时,您首先要基于单个探索创建一个查询,然后通过将其与第一个查询合并来添加其他查询。默认情况下,第一个查询被视为主要查询,但您可以将任何查询指定为主要查询,方法是从该查询的齿轮菜单中选择设为主要查询

您添加的每个查询必须至少有一个维度,且该维度的值可与主查询中的某个维度完全匹配。

切换主查询时,合并的结果可能会发生变化。请参阅了解合并结果,了解主查询的作用。

将合并结果保存到信息中心

将合并结果查询添加到信息中心后,您可以向信息中心添加或应用信息中心过滤条件重新排列结果图块修改图块或向信息中心添加新图块。您无法从基于合并结果的结果块下载数据,但可以以 PDF 格式下载信息中心CSV 文件的集合

如果合并的查询以任何方式进行了更改,那么应用于合并结果图块的所有信息中心过滤条件都将停用。要恢复这些过滤器,您可以在过滤器配置窗口中重新启用。

在嵌入式 Look、信息中心和探索中合并查询

如果您拥有相应权限,就可以在嵌入式 Look、信息中心和探索内合并查询。如需将嵌入式 Look 的查询与其他查询合并,请执行以下操作:

  1. 将鼠标悬停在该 Look 的标题上,以显示该 Look 的齿轮菜单,然后点击齿轮菜单。
  2. 选择合并结果,然后按照合并查询的步骤操作。

若要合并嵌入式信息中心图块的查询,请执行以下操作:

  1. 将鼠标悬停在信息中心图块上,以查看信息中心图块的下拉菜单。
  2. 从下拉菜单中选择从这里开始探索。Looker 会打开该功能块查询的“探索”。
  3. 点击“探索”的齿轮菜单,然后选择合并结果
  4. 按照合并查询的步骤操作。

Notes

  • 对于每个合并查询,合并结果功能的数据行数上限为 5,000 行。如果您纳入了返回超过 5,000 行数据的查询,则合并结果中只会包含所返回的前 5,000 行。

  • 主查询的所有字段都会显示在合并结果中,并采用主查询的名称作为字段。也就是说,如果主查询和添加的查询对匹配的维度使用不同的名称,结果中只会显示主查询的维度名称。

总结

您应该尽可能使用单个“探索”中的数据,因为 Looker 开发者已经仔细考虑了应如何组合不同数据库表中的数据。不过,在需要时,合并结果是一项强大的技术,可让您合并来自多个探索和数据库的数据。