混合您的数据

数据混合是一种合并来自多个数据源的数据的方法。数据混合引入来自辅助数据源的附加信息,并将其与来自主数据源的数据一起直接显示在视图中。

可以通过多种方式来合并数据,每种方式都有自己的优点和缺点。

关系是默认方法,可用于大多数实例,包括跨具有不同详细级别的多个表使用。关系是灵活的,可以适应逐工作表分析的结构。但是,无法在从发布到 Tableau Server 或 Tableau Online 的数据源的中表之间形成关系。

联接通过在类似的行结构中添加更多数据列来合并表。如果表处于不同的详细级别,这可能会导致数据丢失或重复,并且必须先修复联接的数据源,然后才能开始分析。

不像关系或联接,混合绝不会真正地合并数据。相反,混合会单独查询每个数据源,将结果聚合到适当的级别,然后将结果一起直观地呈现在视图中。因此,混合可以处理不同的详细级别,并处理已发布数据源。混合也单独建立在每个工作表上,并且绝不会发布,因为没有真正的“混合数据源”,而只是在可视化项中混合了来自多个数据源的结果。

当混合关系(链接字段)需要逐工作表变化或在合并已发布数据源时,数据混合特别有用。

重要信息:在版本 2020.2 之前,数据混合通常是处理不同详细级别的数据源的最佳方式。这些数据源现在可以使用关系合并。关系的技术限制比数据混合少,是在可能时合并数据的推荐方式。仅当混合是适合您的数据的最佳方法,或者关系不可用时,才鼓励使用混合。

混合数据的步骤

数据混合将在每张工作表上执行,并且,当视图中使用另一个数据源中的字段时,便会建立数据混合。若要在已连接到至少两个数据源的工作簿中创建混合,请将一个数据源中的字段置于工作表中 — 该数据源将成为主数据源。切换到另一个数据源,并在同一工作表上使用一个字段 — 该数据源将成为辅助数据源。数据窗格中将出现一个橙色链接图标,指明正在使用哪些字段来混合数据源。

基本数据混合的 GIF

注意:本主题中的图像尚未更新以反映最新的 UI。“数据”窗格不再将维度和度量显示为标签。

  1. 确保工作簿有多个数据源。应通过转到“数据”>“新建数据源”来添加第二个数据源。

    提示:向第一个数据源中添加另一个连接可在“数据源”页面上启用关系和联接。混合需要在“数据”窗格中单独列出的两个或更多个不同的数据源。

  2. 将一个字段拖到视图上。第一个字段所来源于的数据源将成为主数据源。
  3. 切换到另一个数据源,并确保存在与主数据源的混合关系。
    • 如果有橙色链接字段图标 (),则这些数据源已自动链接。只要有至少一个活动链接,就可以混合数据。
    • 如果有灰色、断开的链接图标 (),请单击应链接两个数据源的字段旁边的图标。它将变为橙色,表示活动链接。
    • 如果链接图标未出现在所需字段旁边,请参见为混合定义混合关系
  4. 将一个字段从辅助数据源拖到视图中。

在同一视图中使用了第二个数据源后,就建立了混合。在下面的示例中,主数据源为“Sales Targets”,辅助数据源源“Sample - Superstore”

  • 主数据源用数据源上的一个蓝色复选标记表示。视图中使用的主数据源中的字段没有指示。
  • 辅助数据源用数据源上的一个橙色复选标记表示,并在“数据”窗格的侧面显示一个橙色条形。视图中使用的辅助数据源中的字段有橙色复选标记。

了解主数据源和辅助数据源

数据混合需要主数据源和至少一个辅助数据源。视图中使用的第一个数据源将成为主数据源,并定义视图。这可能会限制辅助数据源中的值 — 视图中只会显示在主数据源中具有对应的匹配项的值。这与左联接相当。

举例来说,如果主数据源的“月份”字段只包含“四月”、“五月”和“六月”,则围绕月份构建的任何视图将只显示“四月”、“五月”和“六月”,即使辅助数据源有 12 个月的值也是如此。如果所需的分析涉及所有 12 个月,请通过重建工作表并首先使用另一个数据源来尝试切换哪个数据源为主数据源。

了解更多信息:数据源顺序的影响

下面的示例使用依据同一字段链接的相同数据源,并且可视化项两次都是使用相同方式构建的。由于指定的主数据源不同,因此结果存在差异。

  1. 此处先将 Rainfall 数据源中的“Month”(月份)字段置于视图中。由于 Rainfall 只包含 3 个月份,因此在添加 Pollen 数据集作为辅助数据源时,只会将 3 个月份置于视图中。
  2. 显示三个月的可视化项的产品屏幕截图
  3. 在另一个工作表上,先将 Pollen 数据集中的“Month”(月份)字段置于视图中。将显示所有 12 个月。添加 Rainfall 数据集作为辅助数据源时,Rainfall 仅对于该数据集中的三个月份可用。
  4. 显示十二个月的可视化项的产品屏幕截图

在混合的数据源之间工作

由于数据混合的性质,因此,在混合的数据源之间工作时,要牢记一些事项。

使用多个数据源中的字段执行计算可能与普通计算稍有不同。必须在一个数据源中创建计算;这一点会在计算编辑器的顶部指明。

  • 聚合。从另一个数据源使用的任何字段将带有聚合(默认情况下为 SUM,但可以更改)。由于计算无法混用聚合和非聚合参数,因此还必须对在其进行计算的数据源中的字段进行聚合。(下图中的 SUM 聚合是自动添加的,而 sum 聚合是手动添加的。)
  • 点表示法。计算中引用的属于另一个数据源的任何字段都使用点表示法引用其数据源。(在下图中,对于在 Sample - Superstore 中构建的计算,“Sales Target”字段将变为“[Sales.Targets].[Sales Target]”。如果计算是在 Sales Targets 中构建的,则“Sales”字段将变为“[Sample - Superstore].[Sales]”。)
  • 这些是在每个数据源中构建的相同计算的等效版本。在两种情况下,此计算均为 SUM(Sales)/SUM(Sales Target)。

除了处理计算的方式略有不同之外,辅助数据源也有一些限制。您可能无法按辅助数据源中的字段进行排序,并且,对于混合数据,动作筛选器可能无法按预期方式工作。有关详细信息,请参见其他数据混合问题

为混合定义混合关系

为了让 Tableau 知道如何合并来自多个来源的数据,数据源之间必须有公用的一个或多个维度。此公用维度称为链接字段。活动链接字段在辅助数据源的“数据”窗格中用活动链接图标 () 标识,可能的链接字段用断开的链接图标 () 标识。

例如,在事务数据和配额数据的混合中,地理字段可能是所需的链接字段,因此您可以针对该配额来分析某个区域的配额和绩效。

注意:为了使混合正常工作,链接字段的值和成员也必须相同。Tableau 基于共有的值生成混合数据的视图。举例来说,如果“Color”是两个数据源中共有的链接字段,则 Tableau 将匹配主数据源中的“Purple”和辅助数据源中的“Purple”上的数据。但“Lt. Blue”将不会正确映射到“Light Blue”,因此需要对其中的一个字段重命名。就象重命名字段可以帮助 Tableau 识别链接字段一样,您可以编辑这些字段中的成员的别名。有关详细信息,请参见在视图中创建别名以重命名成员

建立链接

如果主数据源和辅助数据源中的链接字段同名,则 Tableau 会自动创建关系。如果已建立了主数据源(即在视图中使用了某个字段),并在“数据”窗格中选择了辅助数据源,则两个数据源之间的同名字段将在辅助数据源中显示链接图标()。如果在视图中使用主数据源中的相关字段,则该链接会自动变为活动状态。

如果辅助数据源中没有链接图标,则可能需要通过以下两种方式之一帮助 Tableau 建立链接: 

  1. 如果公用维度的名称不同(例如“Region”和“Sales Region”),则重命名其中一个维度将允许 Tableau 将它们标识为公用维度并建立链接。

  2. 或者,您可以在主数据源和辅助数据源中的字段之间手动定义关系。请参见下文,了解有关创建手动链接关系的详细信息

根据需要,可以有任意多个活动链接字段或可能的链接字段。在“数据”窗格中单击断开的链接图标 () 可使关系变为活动。

手动定义链接关系

如果公用维度的名称不同,您可以手动映射它们之间的关系。

  1. 选择“数据”>“编辑混合关系”

  2. 在“混合关系”对话框中,验证是否已从“主数据源”下拉列表中选择了主数据源。

  3. “辅助数据源”窗格中选择辅助数据源。将可以看到任何现有的自动混合关系。在关系列表中选择“自定义”,然后单击“添加”

  4. 在“添加/编辑字段映射”对话框中,执行以下操作:

    1. 从主数据源中选择字段。

    2. 从辅助数据源中选择字段以在数据源之间建立链接字段或混合关系,即使字段没有相同的名称也不例外。

    3. 单击“确定”

      此示例中在“Segment”“Cust Segment”之间创建了映射。

      添加/编辑关系对话框的产品 UI

      提示:对于日期,可以精确指定关系。展开日期字段并选择所需的日期部分,例如确切日期、月份、年份等。

  5. 根据需要创建任意多个字段映射,然后单击“确定”

多个链接

与关系或联接一样,数据源之间的链接有时是依据多个字段定义的。举例来说,如果区域销售配额是每月确定的,则需要同时依据区域和月份在事务销售额数据和配额数据之间建立混合,才能在视图中将正确的数据组合在一起。多个链接可以同时处于活动状态。

了解更多信息:多个链接字段的影响

当基于多个字段对数据进行混合时,只有在这些字段中的数据组合在两个数据集之间匹配时,才会在视图中包括值。让我们通过一个示例来了解这一点。

我们有两个表,一个表示观鸟者实际看到的鸟类,另一个表示报告目睹的鸟类。

并且

如果使用主数据源 (Birds seen) 中的“Birdwatchers”和“Number of birds”字段设置了混合视图,并引入了辅助数据源 (Birds reported) 中的字段“Number of reports”,则 Tableau 会自动依据“Birdwatcher”进行混合。

注意:本主题中的图像尚未更新以反映最新的 UI。“数据”窗格不再将维度和度量显示为标签。

我们看到,观鸟者 A 看到了三只鸟并进行了两次报告,B 看到了四只鸟并进行了一次报告,而 C 看到了 8 只鸟并进行了两次报告。

但还有一个可能的链接字段“Species seen”。为何不同时依据此字段进行混合?它是否会产生影响? 

它会产生很大的影响。现在,我们看到对于观鸟者 A 和 C 都各自只有一次报告,而 B 则没有报告。怎么回事? 

原来这些观鸟者都不很诚实。当他们只是根据日志条目(上图中的蓝色条形)报告观察结果时,他们报告目睹的种类与他们实际看到的种类不匹配(注意 Birds seen 辅助数据源中第二个列中的 null 值)。当他们使用照片(橙色条形)作为报告证据时,他们是诚实的(两个“Species seen”列匹配)、由于三次报告的种类都不匹配,因此在使用“Birdwatcher”和“Species seen”字段作为链接字段时删除了这些数据行。视图仅显示链接字段的值匹配的数据。

依据多个字段进行链接时要小心。尽管可以很容易地单击图标并建立活动链接,但过度链接或依据不适当的字段进行链接可能会对分析产生严重影响。

联接与数据混合之间的差异

数据混合模拟传统的左联接。二者之间的主要区别在于聚合的执行时间。联接先合并数据,然后进行聚合。混合则先聚合,然后再合并数据。

左联接

使用左联接组合数据时,会向数据库中发送查询,查询在哪里执行联接。左联接返回左侧表的所有行,以及右侧表中任何对应的行。联接的结果随后会发回给 Tableau 并进行聚合,用于在可视化项中显示。

左联接采用左侧表中的所有行。公用列为“User ID”和“Patron ID”;在右侧表中有对应信息的情况下,将返回该数据。否则会存在 null。

 

假设采用相同的表,但掉转顺序。这个新的左联接会生成不同的结果。同样,左联接会采用新的左侧表格中的所有数据,但基本上会忽略右侧表中的一行。未包括“User ID”为 4 的数据行,因为左侧表中没有“Patron ID”为 4 的行。

数据混合

使用数据混合合并数据时,会为工作表上使用的每个数据源将查询发送到数据库。查询的结果将以聚合数据的形式发回给 Tableau,并一起呈现在可视化项中。

注意:聚合度量非常简单 — 我们可以轻松地进行总和、平均值、最大值或其他数字聚合。度量值根据视图中字段的聚合方式进行聚合。但是,必须对辅助数据源中的所有字段进行聚合。对于维度将如何处理?维度值使用 ATTR 聚合函数进行聚合,该函数会为辅助数据源中的所有行返回单个值。如果这些行中包含多个值,则会显示星号 (*)。这可以解读为“视图中此标记的辅助数据源中有多个值”。

视图将根据链接字段使用主数据源(充当左表)中的所有值以及辅助数据源(右表)中的对应行。

假设您有以下各表。如果您的链接字段为“User ID”和“Patron ID”,则由于以下原因,并非所有值都会出现在生成的表中:

  • 左表中的行在右表中没有对应的行匹配项,结果中的 null 值指明了这种情况。

  • 右表内的行中具有多个对应的值,结果中的星号 (*) 值指明了这种情况。

在涉及度量时,它们也会聚合,如下所示:

重要信息:包含混合数据的视图中的星号 (*) 表示多个值。通过确保主数据源中每个标记在辅助数据源中只有一个匹配值(可通过交换主数据源和辅助数据源来实现),从而解决此问题。有关详细信息,请参见数据混合疑难解答

数据混合总览

  • 数据混合在每张工作表上进行。
  • 使用字段的顺序确定了哪个数据源是主数据源,哪个数据源是辅助数据源。
  • 主数据源用蓝色复选标记表示,任何辅助数据源以及辅助数据源中的字段带有橙色复选标记。
  • 可以根据共用的字段名自动确定链接字段,或者可以手动创建混合关系。
  • 数据混合的行为类似于左联接,可能导致辅助数据源中数据缺失。
  • 可能会出现星号 (*)。这表示单个标记中的多个维度值,因为数据混合使用聚合结果并将它们合并在视图中。
  • 可以使用辅助数据源为主数据源中的字段值重新提供别名。有关详细信息,请参见使用数据混合为字段值指定别名

数据混合限制

  • 存在一些与非累加聚合(例如 COUNTD、MEDIAN 和 RAWSQLAGG)相关的数据混合限制。有关详细信息,请参见数据混合疑难解答
  • 混合数据源不能作为一个整体发布。相反,请单独发布每个数据源(到同一服务器),然后混合发布的数据源。
  • 在计算中必须始终聚合辅助数据源中的数据。
  • 如果要混合多维数据集数据源,则该数据源必须是主数据源。

此部分中的其他文章

感谢您的反馈!