合并结果是一项查询后处理功能,如果不谨慎使用,可能会使 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 联接的用户,合并结果功能会以与左联接类似的方式合并多个探索的结果。所添加查询的结果会与主要查询的结果合并,就像它们与主要查询相联接一样。
您不必熟悉左联接的概念也能理解合并结果的运作方式。实际上,主要查询之所以重要,原因在于:
- 字段名称的显示方式:对于匹配字段,主查询的字段名称会在合并结果中使用,如上例所示。
合并结果如何处理没有匹配值的查询:下一部分如果一个查询没有匹配的数据值,该怎么办?讨论了在匹配维度中只有部分查询具有特定值时,Looker 如何处理合并数据。
您也可以参阅为什么次要合并结果查询中有 null 值?最佳实践页面,了解有关结果值缺失或为 null 的更多问题排查提示。
合并结果如何处理具有多个匹配值的查询:本页面后面部分中的如果一个查询有多行包含同一个值,会怎样?部分讨论了当某些查询在匹配维度中包含多个具有特定值(或值组合)的行时,Looker 如何处理合并数据。
如果某个查询没有匹配的数据值,该怎么办?
主要查询重要的另一个原因是匹配维度中处理 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 行,因此所添加查询中的任何字段都将显示 Formalwear 的 NULL (∅)。
添加的查询有两行与 Jeans 对应,但主查询则没有。因此,这一行根本不会显示在合并结果中。
在此示例中,如果您切换主要查询,使添加的查询成为新的主查询,则 Looker 会生成以下合并结果:
产品类别 | 产品品牌名称 | 产品部门 | 库存数量中的项目数 | 商品数量 |
---|---|---|---|---|
有效 | 品牌 1 | 成人 | 223 | 545 |
有效 | 品牌 1 | 儿童 | 223 | 522 |
连衣裙 | 品牌 2 | 成人 | 80 | 878 |
连衣裙 | 品牌 3 | 成人 | 3 | 878 |
牛仔裤 | 品牌 2 | ∅ | 19 | ∅ |
牛仔裤 | 品牌 3 | ∅ | 8 | ∅ |
Looker 不再显示 Formalwear 行,因为它们不存在于我们的新主要查询中。但是,Looker 现在会显示 Jeans 行,而且这些行仅对添加到主查询的查询中的维度和测量值显示 NULL。
您也可以参阅为什么次要合并结果查询中有 null 值?最佳实践页面,了解有关结果值缺失或为 null 的更多问题排查提示。
如果一个查询有多行包含同一个值,该怎么办?
最后,由于处理具有匹配值的多个行的方式,指定所需的主查询也很重要。如果添加的查询有两行或更多行中的值与主查询中的某一行相匹配,则主查询行会重复相应次数。
在以下示例中,已添加的查询包含两行“Dresses”的数据。在合并后的结果中,主要查询中的 Dresses 值会出现两次,所添加查询的 Dresses 行各出现一次。
主查询会返回以下结果:
产品类别 | 产品部门 | 商品数量 |
---|---|---|
有效 | 儿童 | 522 |
有效 | 成人 | 545 |
连衣裙 | 成人 | 878 |
正装 | 成人 | 349 |
次要查询会返回以下结果:
产品类别 | 产品品牌名称 | 库存数量中的项目数 |
---|---|---|
有效 | 品牌 1 | 223 |
连衣裙 | 品牌 2 | 80 |
连衣裙 | 品牌 3 | 3 |
牛仔裤 | 品牌 3 | 8 |
牛仔裤 | 品牌 2 | 19 |
合并后的结果查询在产品类别字段上合并,返回以下结果:
产品类别 | 产品部门 | 产品品牌名称 | 商品数量 | 库存数量中的项目数 |
---|---|---|---|---|
有效 | 成人 | 品牌 1 | 545 | 223 |
有效 | 儿童 | 品牌 1 | 522 | 223 |
连衣裙 | 成人 | 品牌 2 | 878 | 80 |
连衣裙 | 成人 | 品牌 3 | 878 | 3 |
正装 | 成人 | ∅ | 349 | ∅ |
请注意,在这种情况下切换主查询,您将仍然有两个“Dresses”行,因为新指定的主要查询有两个“Dresses”行。总而言之,合并查询时,结果的行数可能会多于主查询的行数,但行数绝不会少于。
合并查询
如需合并多个查询的结果,请按以下步骤操作:
- 创建第一个源查询(称为“主查询”)。
- 添加下一个源查询。
- 检查这些查询的合并规则并运行合并。
-
- 对结果进行排序、透视和创建可视化图表。
- 重复使用并使用该网址分享结果。
- 请通过修改源查询或添加源查询来修改结果。
创建主查询
如需合并多个查询的结果,请先按照以下步骤准备主查询:
- 从探索菜单中选择一个探索。
从字段选择器中选择感兴趣的维度和测量。在此步骤中,不透视任何维度。
这就是开始合并结果所需的一切。不过,您还可以使用一些高级探索分析法进一步优化查询。您可以:
(可选)为数据添加过滤条件。
(可选)添加表计算以创建临时指标。
(可选)点击运行,以查看主查询的结果并测试过滤条件和表格计算结果。
添加下一个源查询
创建主要探索后,请按以下步骤添加其他来源查询:
- 在“探索”中,点击齿轮图标。
- 选择合并结果。系统随即会打开选择探索窗口。
在选择探索窗口中,点击您将在其中创建下一个查询的探索的名称。
Looker 在修改查询窗口中打开“探索”,您可以在其中构建要合并到主查询的新查询。
为了合并查询,Looker 会在查询中查找其值可以匹配的维度。请确保您的查询至少包含一个共同维度,该维度的值可以完全匹配。例如,如果两个查询都有“日期”维度,但其中一个查询使用“2017-10-01”作为值,另一个查询使用“2017 年 10 月”作为值,则 Looker 无法使用该维度来合并这些查询。
从字段选择器中选择感兴趣的维度和测量。请务必至少添加一个维度,该维度将与主要查询中的某个维度完全匹配。在此步骤中,不透视任何维度。
(可选)添加过滤条件以缩小数据范围。
(可选)结合表计算,以根据查询字段创建新字段。
(可选)点击运行以查看源查询的结果,并测试过滤条件和表计算。
点击保存,将该查询合并到您的主查询中。
检查合并规则并运行合并
Looker 会自动查找最适合查询的维度,并在合并规则部分中显示这些匹配项。Looker 会显示每次合并将使用的字段。
查看 Looker 用于与查询匹配的维度。(如需了解如何更改这些规则,请参阅修改合并规则)。
点击运行以查看合并的查询结果。
请注意,源查询的所有表格计算在合并结果中都会显示为标准维度。
使用和修改合并结果
您可以将合并的结果用于以下用途:
- 检查数据并对其进行排序,包括深入研究数据。但是,如果您深入到用于合并两个探索的维度,则 Looker 只会显示主要探索中的深入分析字段。
- 查看totals。Looker 会计算每个组成部分查询的总计值,并在合并结果中使用这些总计值。因此,您看到的总计值可能会过高,因为您看到的总计值是在合并结果之前计算得出的。避免发生这种情况的一种方法是,针对每个查询对齐过滤条件。
- 创建可视化图表。
- 在合并结果中透视维度,方法是从数据表维度列的齿轮菜单中选择数据透视。请注意,您无法对源查询中的维度进行数据透视。
如需重复使用合并后的结果,您可以:
- 使用浏览器网址分享结果。
- 在浏览器中将网址添加为书签,以便将来再次运行同一合并的查询。您无法将合并的结果保存为 Look。
- 将合并的结果保存为信息中心的图块(请参阅将合并的结果保存到信息中心)。
如果您想修改合并结果,可以执行以下操作:
- 如需合并其他探索中的查询,请点击添加查询按钮并按照相同的步骤操作。
- 修改源查询或配置查询的合并方式。如需了解详情,请参阅修改合并的结果。
- 创建过滤条件,方法是在源查询中添加这些过滤条件(在创建和合并查询时添加),或在合并的结果页面中修改查询。请注意,您无法直接向合并结果添加过滤条件。
如果您想要清除缓存并从数据库中检索最新结果,请从合并结果窗口右上角的齿轮菜单中选择清除缓存并刷新选项。
如需下载合并结果查询,您可以将查询保存到信息中心,然后以 PDF 或 CSV 文件集合的形式下载信息中心。
修改合并结果
合并结果生成后,您可以对合并结果进行以下更改:
修改源查询
在合并结果窗口中,您可以通过点击左侧窗格中的查询名称,或从查询的齿轮菜单中选择修改,返回并修改源查询。这些选项会将您带回 Edit Query 屏幕。
您可以添加或移除字段、添加表计算,或更改源查询的过滤条件。点击保存返回合并结果。
该查询的齿轮菜单还包含以下选项:
- 重命名:指定在 Merged Results 窗口中为查询显示的其他名称。
- 设为主要查询:将查询设为合并结果的基础查询。请参阅了解合并的结果,了解主要查询的角色。
- 删除:从合并的结果中移除相应查询。(如果您想在删除合并结果后将其重新添加到合并结果中,可以使用浏览器中的返回按钮。)
修改合并规则
添加查询后,Looker 会自动查找可用于将添加的查询与主要查询匹配的维度。添加的每个查询都必须至少有一个维度,且该维度的值与主查询中的某个维度完全匹配。Looker 会在合并规则部分显示这些匹配项,并显示哪些字段将用于合并查询。
您可以使用“合并规则”部分更改或添加 Looker 用于合并查询的字段。
- 使用该下拉菜单可查看用于匹配数据的其他维度选项。
- 如果存在可用于匹配的其他维度,Looker 会显示 + 添加维度。点击 + 添加维度可配置要在查询合并中使用的一组其他维度。
- 如果您不想匹配这两个维度之间的数据,请点击 X。
切换主查询
合并查询时,您需要先基于单个探索创建单个查询,然后再将这些查询与第一个查询合并以添加其他查询。默认情况下,系统会将第一个查询视为主要查询。不过,您可以从该查询的齿轮菜单中选择设为主要查询,将其指定为主要查询。
添加的每个查询必须至少有一个维度,该维度的值可以与主查询中的某个维度完全匹配。
当您切换主要查询时,合并的结果可能会发生变化。请参阅了解合并的结果,了解主要查询的角色。
正在将合并结果保存到信息中心
将合并结果查询添加到信息中心后,您可以向信息中心添加或应用信息中心过滤条件、重新排列图块、修改图块或添加新图块。您无法从基于合并结果的图块中下载数据,但可以以 PDF 格式或一系列 CSV 文件下载信息中心。
如果以任何方式更改合并的查询,则应用于合并结果图块的所有信息中心过滤条件都将停用。要恢复这些过滤器,您可以在过滤器配置窗口中重新启用它们。
您还可以在 LookML 信息中心使用合并结果查询,方法是先将查询保存到用户定义的信息中心,然后将该信息中心转换为 LookML。如需将用户定义的信息中心转换为 LookML,请按照构建 LookML 信息中心文档页面中列出的步骤操作。
合并嵌入式 Look、信息中心和探索中的查询
如果您拥有适当的权限,可以在嵌入式 Look、信息中心和探索中合并查询。如需将嵌入式 Look 的查询与另一个查询合并,请执行以下操作:
- 将鼠标悬停在 Look 的标题上,即可显示 Look 的齿轮菜单,然后点击齿轮菜单。
- 选择合并结果,然后按照合并查询的步骤操作。
如需合并嵌入式信息中心图块的查询,请执行以下操作:
- 将鼠标悬停在信息中心图块上,即可查看该信息中心图块的下拉菜单。
- 从下拉菜单中选择从这里开始探索。Looker 会针对该图块查询打开“探索”。
- 点击“探索”的齿轮菜单,然后选择合并结果。
- 按照合并查询的步骤操作。
Notes
对于每个合并后的查询,合并结果功能中的数据行上限为 5,000 行。如果您包含的查询返回的数据超过 5,000 行,合并结果中只会包含返回的前 5,000 行。
主要查询的所有字段都会显示在合并结果中,并会使用主查询中的字段名称。这意味着,如果主要查询和添加的查询针对某个匹配维度使用不同的名称,则结果中只会显示主要查询的维度名称。
总结
您应该尽可能使用单个“探索”中的数据,因为您的 Looker 开发者已仔细考虑如何合并不同数据库表中的数据。不过,如果需要,合并结果是一项强大的技术,可让您合并来自多个探索和数据库的数据。