合并不同探索的结果

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

Looker 中的探索由 Looker 开发者设计,旨在利用数据字段与表之间的指定关系,以最有效的方式合并数据库表中的数据。因此,建议使用单个探索来检查您的数据。

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

了解合并结果

合并查询时,先基于单个探索创建单个查询,然后再将其他查询与第一个查询合并。

第一个查询默认为查询。这是非常重要的概念,因为当 Looker 匹配数据以创建合并结果时,它会将每个添加的查询与主查询(而不是与添加的其他查询)相匹配。因此,无论何时添加查询,都需要在查询中包含一个可以与主查询中的某个维度相匹配的维度。

例如,请考虑以下查询。

主要查询会返回以下结果:

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

次级查询会返回以下结果:

产品类别 商品目录中包含的商品数量
有效 11
牛仔裤 16
正装 6

如果您在产品类别字段上合并这些查询,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

如果您在产品类别字段上合并这些查询,Looker 会生成以下合并结果:

产品类别 产品部 商品品牌名称 商品数量 商品目录中包含的商品数量
有效 成人 品牌 1 545 223
有效 儿童 品牌 1 522 223
连衣裙 成人 品牌 2 878 80
连衣裙 成人 品牌 3 878 3
正装 成人 349

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

添加的查询针对“牛仔裤”有两行,但主查询没有。Jeans因此,此行根本不会显示在合并后的结果中。

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

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

Looker 不再显示礼服行,因为新的主要查询中不存在这些行。不过,Looker 现在会显示“牛仔裤”行,并且对于仅在添加到主查询的查询中存在的维度和测量值,这些行会显示 NULL。Jeans

您还可以参阅为什么我的次级合并结果查询中存在 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 只会显示主要探索中的展开字段。
  • 查看总计。Looker 会计算每个组成部分查询的总和,并在合并的结果中使用这些总和。因此,总数可能会看起来过高,因为您看到的是合并结果之前计算的总数。避免出现这种情况的一种方法是使每个查询的过滤条件对齐。
  • 创建可视化图表。
  • 在合并后的结果中对维度进行数据透视:从数据表格中维度列的齿轮菜单中选择数据透视。请注意,您无法在来源查询中对维度进行转换。

如需重复使用合并的结果,您可以:

  • 使用浏览器网址分享结果。
  • 在浏览器中为该网址添加书签,以便日后再次运行相同的合并查询。您无法将合并的结果另存为“外观”。
  • 将合并结果保存为信息中心上的功能块(请参阅将合并结果保存到信息中心)。

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

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

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

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

修改合并结果

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

修改来源查询

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

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

查询的齿轮菜单中还提供了以下选项:

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

修改合并规则

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

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

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

切换主查询

合并查询时,先基于单个探索创建单个查询,然后再将其他查询与第一个查询合并。第一个查询默认为主查询,但您也可以从查询的齿轮菜单中选择设为主查询,将任何查询指定为主查询。

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

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

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

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

如果合并查询发生任何更改,系统会关闭应用于合并结果图块的所有信息中心过滤条件。您可以在过滤条件配置窗口中重新启用过滤条件,以恢复过滤条件。

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

如果您拥有适当的权限,则可以在嵌入式数据分析、信息中心和探索中合并查询。如需将嵌入式外观的查询与其他查询合并,请执行以下操作:

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

如需合并嵌入式信息中心功能块的查询,请执行以下操作:

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

备注

  • 合并结果功能中,每个合并查询的数据行数限制为 5,000 行。如果您添加的查询返回的数据行数超过 5,000 行,则合并结果中将只纳入返回的前 5,000 行数据。

  • 主查询的所有字段都会显示在合并的结果中,并使用主查询的字段名称。这意味着,如果主查询和添加的查询对匹配的维度使用不同的名称,则结果中只会显示主查询的维度名称。

总结

请尽可能使用单个探索中的数据,因为 Looker 开发者会仔细考虑如何合并不同数据库表中的数据。不过,在需要时,您可以使用合并结果这一强大方法,将来自多个探索和数据库的数据组合在一起。