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