合并结果是一项查询后处理功能,如果未谨慎使用,可能会导致 Looker 实例资源过载,并导致 Looker 实例对所有用户的响应速度变慢。最佳做法是在 LookML 中定义函数和逻辑,后者会生成由您的数据库处理的 SQL。请参阅最佳做法:优化 Looker 性能帮助中心文章,详细了解如何优化 Looker 性能。
Looker 中的探索由 Looker 开发者设计,通过使用数据字段和表之间的关系来定义,从而以最有效的方式组合数据库表中的数据。因此,最好使用单个“探索”功能来检查数据。
但是,有时候您的 Looker 开发者尚未创建您所需的关系或遇到了技术限制。在这些情况下,您可以通过合并结果将来自不同探索(甚至来自不同模型或项目)的结果组合起来,创建用于探索和创建可视化图表的数据表。您可以使用合并结果作为概念验证,进一步开发和定义 LookML 项目和模型。
了解合并的结果
在合并查询时,您首先要通过单个“探索”创建一个查询,然后将其他查询与第一个查询合并在一起。
合并结果功能限制每个合并查询最多 5000 行数据。如果您纳入的查询返回的数据超过 5,000 行,则只有返回的前 5,000 行会包含在合并的结果中。
默认情况下,第一个查询被视为主要查询。这是一个重要概念,因为当 Looker 匹配数据以创建合并的结果时,它会将每个已添加的查询与主要查询(而不是任何其他已添加的查询)进行匹配。因此,每当您添加查询时,都需要在主查询中添加可与维度匹配的维度。
您可以通过切换主查询将添加的查询设置为主查询。
以下是一组查询及其合并结果的示例:
所有主要查询的字段都会显示在合并结果中,并会显示字段的主要查询名称。也就是说,如果主要查询和添加的查询对匹配的维度使用了不同的名称,则结果中只会显示主要查询的维度名称。
合并的结果不会执行实际的 SQL 联接。但是,对于熟悉 SQL 联接的人来说,合并结果功能会将多个“探索”的结果合并,其方式与左联接类似。添加的查询的结果与主查询的结果合并,就好像这些结果被联接起来一样。
如果您不熟悉左联接这一概念,也没关系。实际上,为什么它成为主要查询的原因也很重要:
- 字段名称的显示方式:对于匹配的字段,合并后会使用主要查询的字段名称,如上所示。
- 合并结果如何处理没有匹配值的查询:下一部分(如果一个查询没有匹配的数据值会怎么样?)讨论了 Looker 如何处理只有部分查询在匹配维度中有特定值才会合并的数据。
- 您还可以参考为什么我的次要合并结果查询中存在 NULL?关于缺少合并结果值缺失或为 null 值的问题排查提示的更多帮助中心文章。
- 合并结果如何处理具有多个匹配值的查询:本页面后面的如果一个查询有多行包含同一值?部分介绍了当某些查询在匹配维度中有多个行具有特定值(或值组合)时,Looker 会如何处理合并数据。
如果某个查询没有匹配的数据值,该怎么办?
主要查询很重要的另一个原因是,匹配维度中处理 null 值的方式如下:
- 如果主要查询中存在其他行,但其他查询中不存在该行,则添加的查询字段对于该行将为 NULL。
在下面的示例中,主查询的 Maternity 有一行,因此合并后的结果会显示此行。添加的查询没有 Maternity 行,因此对于添加的查询,任何字段将显示 Maternity 的 NULL。 - 如果主要查询中不存在某行,则该行根本不会显示在结果中。
在下面的示例中,添加的查询针对 Jeans 有两行,但主要查询没有。因此,这一行根本不会显示在合并的结果中。
在此示例中,如果我们切换主查询将添加的查询作为新的主查询,则会获得如下所示的合并结果。
请注意,我们没有 Maternity 行,因为它们在我们的新主查询中不存在。不过,现在我们有 Jeans 行,而且对于只在主查询中添加的查询中的维度和度量,这些行会显示 NULL。
您还可以参考为什么我的次要合并结果查询中存在 NULL?关于缺少合并结果值缺失或为 null 值的问题排查提示的更多帮助中心文章。
如果一个查询有多个行具有相同的值,该怎么办?
最后,指定所需的主要查询也很重要,因为处理具有匹配值的多行的方式。如果添加的查询有两行或两行的值与主查询中的某一行匹配,则主查询行将重复该次数。
在下面的示例中, added 查询有 2 行 resseses。在合并的结果中,主查询的 Dresses 值出现两次,对于附加查询中的 Dresses 行,每行都会出现一次:
请注意,在这种情况下,如果您切换主查询,则仍将有 2 个女装行,因为新指定的主要查询有 2 行女装。结论是,在合并查询时,结果可能具有比主要查询更多的行,但行数永远不会更少。
合并查询
如需合并多个查询的结果,您需要完成以下步骤:
- 创建第一个源查询(称为主查询)。
- 添加下一个源查询。
- 检查这些查询的合并规则并运行合并。
-
- 对结果进行排序、透视和创建可视化图表。
- 使用网址重复使用并分享结果。
- 通过修改源查询或添加源查询来修改结果。
创建主查询
要合并多个查询的结果,您首先要开始查询,该查询被视为主要查询:
- 从探索菜单中选择“探索”。
从字段选择器中选择您感兴趣的维度和指标。在此步骤中,请勿对任何维度进行数据透视。
以上就是开始合并结果所需的全部信息。不过,您也可以使用一些高级探索分析法进一步优化查询。您可以:
(可选)为这些数据添加过滤条件。
(可选)添加表计算以创建临时指标。
(可选)点击运行以查看主查询的结果并测试过滤条件和表计算。
添加下一个源查询
创建主要“探索”后,您可以添加其他来源查询:
在“探索”部分,点击齿轮图标。
选择合并结果。此操作会打开 Choose a Discover 窗口。
在选择探索窗口中,点击要在其中创建下一个查询的探索的名称。
Looker 在修改查询窗口中打开“探索”,您可以在其中构建要合并到主查询中的新查询:
为了合并查询,Looker 会在查询中查找值可以匹配的维度。请确保您的查询至少包含一个值能够与之完全匹配的常用维度。例如,如果两个查询都有“日期”维度,但其中一个查询使用“2017-10-01”值,而另一个查询使用“2017 年 10 月”的值,则 Looker 无法使用该维度合并查询。
从字段选择器中选择您感兴趣的维度和指标。确保至少包含一个与主要查询中的维度完全匹配的维度。在此步骤中,请勿对任何维度进行数据透视。
(可选)添加过滤条件以缩小数据范围。
视需要添加表计算,以基于查询字段创建新字段。
(可选)点击 Run 以查看源查询结果,并测试过滤条件和表计算。
点击保存,将查询合并到主查询中。
检查合并规则并运行合并
Looker 会自动查找用于匹配查询的最佳维度,并在合并规则部分显示这些匹配项。Looker 展示了如何将每个查询与主要查询合并:
查看 Looker 用来匹配查询的维度。(如需了解如何更改这些规则,请参阅修改合并规则)。
点击运行以查看合并的查询结果:
请注意,源查询中的任何表计算都会在合并结果中显示为标准维度。
使用和修改合并的结果
您可以使用合并后的结果执行以下操作:
- 检查数据并对其进行排序,包括深入研究数据。但是,如果您深入到用于合并两个“探索”的维度,那么 Looker 只会显示主要“探索”中的深入字段。
- 查看总计。Looker 会计算每个组件查询的总数,并在合并的结果中使用这些总数。因此,显示的总数可能太高,因为您所看到的数据是在合并结果之前计算的总数。避免这种情况的一种方法是针对每个查询对齐过滤条件。
- 创建可视化图表。
- 在合并结果中选择数据透视维度,方法是从数据表的维度列内的齿轮菜单中选择数据透视。请注意,您无法在源查询中透视维度。
如需重复使用合并的结果,您可以执行以下操作:
- 使用浏览器网址分享结果。
- 在浏览器中为该网址添加书签,以便日后再次运行相同的合并查询。无法将合并结果另存为 Look。
- 在信息中心将合并的结果保存为图块(请参阅将合并的结果保存到信息中心)。
如果您想修改合并的结果,可以执行以下操作:
- 点击添加查询按钮并遵循相同的步骤,合并其他探索中的查询。
- 修改源查询或配置查询的合并方式。如需了解详情,请参阅修改合并的结果。
- 创建过滤器:在源查询中添加这些过滤器(在创建和合并查询时添加),或在合并的结果页面中修改查询。请注意,您无法直接在合并的结果中添加过滤条件。
若要清除缓存并从数据库中检索新结果,请从合并结果窗口右上角的齿轮菜单中选择清除缓存和刷新选项。
要下载合并的结果查询,您可以将查询保存到信息中心,然后以 PDF 或 CSV 文件集合的形式下载信息中心。
修改合并的结果
获得合并结果后,您仍可以灵活修改合并的查询以及用于合并查询的规则:
修改源查询
在合并的结果窗口中,点击左侧窗格中的查询名称,或从查询的齿轮菜单中选择修改,即可返回修改源查询。通过这些选项,您可以返回到 Edit Query 屏幕:
在这里,您可以添加或移除字段、添加表格计算条件或更改源查询的过滤条件。点击保存即可返回合并后的结果。
查询的齿轮菜单还包含以下选项:
- 重命名:指定要在合并结果窗口中为查询显示的其他名称。
- 设为主要数据库:将查询设为合并结果的基础。请参阅了解合并的结果,了解主查询的角色。
- 删除:从合并的结果中移除查询。(如果您想在删除查询后将其重新添加到合并的结果中,可以在浏览器中使用返回按钮。)
修改合并规则
添加查询后,Looker 会自动查找可用于将添加的查询与主查询匹配的维度。每个添加的查询都必须至少有一个维度,其值与主要查询中的维度完全匹配。Looker 在合并规则部分中显示这些匹配项,显示每个添加的查询将如何与主要查询合并:
您可以使用“合并规则”部分更改或添加用于匹配的维度:
- 使用下拉菜单查看与该数据匹配的其他维度选项。
- 如果有其他维度可用于匹配,Looker 会显示 + 添加维度。点击 + 添加维度,以配置要在查询合并中使用的其他维度集。
- 如果您不想匹配这两个维度之间的数据,请点击 X。
切换主要查询
合并查询时,我们首先通过单个“探索”功能创建单个查询,然后将其他查询与第一个查询合并,以添加其他查询。默认情况下,第一个查询将被视为主要查询,但我们可以通过从查询的齿轮菜单中选择设为主要来将任何查询指定为主要查询:
每个添加的查询都必须至少有一个维度,其值可与主要查询中的维度完全匹配。
切换主要查询时,合并的结果可能会发生变化。请参阅了解合并的结果,了解主查询的角色。
将合并结果保存到信息中心
在将合并的结果查询添加到信息中心后,您可以向合并的结果图块添加或应用信息中心过滤条件,重新排列图块,修改图块或向信息中心添加新图块。您无法根据合并结果从图块中下载数据,但可以下载 PDF 格式的信息中心或将 CSV 文件下载为 CSV 文件集合。
如果以任何方式更改合并的查询,应用于合并结果图块的所有信息中心过滤条件都将关闭。您可以重新启用过滤器,只需在过滤器配置窗口中重新启用相应过滤器即可。
您还可以在 LookML 信息中心使用合并的结果查询,方法是首先将查询保存到用户定义的信息中心,然后将该信息中心转换为 LookML。如需将用户定义的信息中心转换为 LookML,请按照构建 LookML 信息中心文档页面中所述的步骤操作。
将嵌入的样式、信息中心和“探索”中的查询合并
如果您拥有相应的权限,则可以在嵌入式外观、信息中心和探索中合并查询。如需将嵌入式 Look 的查询与其他查询合并,请按以下步骤操作:
- 将鼠标悬停在 Look 的标题上以显示 Look 的齿轮菜单,然后点击齿轮菜单。
- 选择合并结果,然后按照合并查询的步骤操作。
如需合并嵌入式信息中心图块的查询,请执行以下操作:
- 将鼠标悬停在信息中心图块上,即可查看该信息中心图块的下拉菜单。
- 从下拉菜单中选择从此处探索。Looker 打开针对该图块的查询。
- 点击“探索”齿轮菜单,然后选择合并结果。
- 按照合并查询的步骤操作。
总结
您应尽可能使用单个“探索”工具中的数据,因为您的 Looker 开发者仔细考虑了如何合并不同数据库表中的数据。不过,在需要时,合并结果是一种强大的技术,可让您合并来自多个探索和数据库的数据。