从 Tableau 2020.2 开始,我们进行了几项重大改进,使多表分析更轻松、更直观。本主题介绍这些变化。

Tableau 中的新数据建模功能可帮助您更轻松地跨多个表分析数据。借助数据源中新的逻辑层和关系,您能够以星形和雪花架构形式创建多表数据模型,并在不同的详细级别 (LOD) 处使用多个事实表。

  • 数据源更易于构建、维护和分析。数据源现在具有一个新的逻辑层,您可以在其中的表之间创建灵活的关系。通过关联位于不同详细级别的表,创建多表、多事实数据模型。更轻松地从多个表中引入数据,并维护更少的数据源来满足您的分析需求。
  • 关系使分析体验更加直观。您不再需要进行广泛的联接规划,并假设需要哪些联接类型才能使数据可供分析。Tableau 根据可视化项中使用的字段自动选择联接类型。在分析过程中,Tableau 会智能地调整联接类型,并在数据中保留本机详细级别。您可以在可视化项中字段的详细级别查看聚合,而不必考虑基础联接。关系可以是多对多,并支持完全外部联接。您无需使用 LOD 表达式(例如 FIXED)来消除关联表中的重复数据。
  • “数据源”页面、“查看数据”窗口和“数据”窗格已更新,以支持多表分析体验。“数据源”页面画布的第一个视图现在是逻辑层,您可以在其中定义表之间的关系。为了支持多表分析,Tableau 界面的几个部分已更改。“数据源”页面(画布、数据网格)、“查看数据”窗口和工作表中的“数据”窗格均已更新,以支持多表分析体验。有关详细信息,请参见界面不同部分的变化(链接在新窗口中打开)。用于访问视图数据的 API 也已更新,以支持多表分析。
  • 上下文感知查询在需要时引入相关数据。使用关系的数据源可以更轻松地将更多表、更多行数据和多个事实数据表引入单个数据源。Tableau 将仅根据可视化项中有效的字段从工作表所需的表中提取数据,而不是查询整个数据源。

观看视频:有关数据源增强功能的概述以及在 Tableau 中使用关系的简介,请参阅这个时长 5 分钟的视频。

在以下 Tableau 博客文章中详细了解关系查询的工作方式:

数据源、数据模型和查询语义的变化

对多表数据源的支持

Tableau 中的数据源可识别并保留规范化数据。借助多表数据源,Tableau 可以在单个数据源中处理多个详细级别。这种支持使您能够更轻松地准备和浏览数据,而不必编写专门的计算来控制像平均值和总计这样的聚合。使用星形和雪花架构合并表,从而无缝关联多个事实表。新的逻辑层使用上下文动态联接,并为您提供更好的域控制(请参见支持的数据模型架构)。

Tableau 可识别和维护表之间的基础关系,因此需要的联接和计算应该较少。由于这些增强的数据源可以回答更广泛的问题,因此您可以整合创建和维护所需的不同数据源的数量。表示相同数据所需的数据源更少。

什么没有改变?

与以前的版本相比,逻辑层中的关系为合并数据提供了更多选项(没有删除任何功能)。您仍然可以在 Tableau 中创建单表数据源。您可以使用联接、并集、自定义 SQL 等的组合来构建逻辑表。Tableau 中单表分析的行为未改变。对包含维度和度量混合的单个逻辑表进行分析的工作方式与 Tableau 2020.2 之前的版本一样。

另请参见有关关系、数据模型和数据源的问题

数据源中的新逻辑层

在以前版本的 Tableau 中,数据源中的数据模型由单个物理层组成,您可以在其中指定联接和并集。添加到(联接或合并)物理层的表创建单个拼合的表(非规范化)以进行分析。

以前的版本   2020.2 及更高版本
 
在 2020.2 之前的 Tableau 版本中,数据模型只有物理层。   在 2020.2 及更高版本中,数据模型具有两个层:逻辑层和物理层

在 Tableau 2020.2 中,数据源中的数据模型现在在物理层上包括一个新的语义层(称为逻辑层),您可以在其中根据匹配的字段对添加多个表并相互关联。逻辑层中的表不会合并到数据源中,它们保持独立(规范化),并保持其本机详细级别。

逻辑表充当物理表的容器。您仍可以在物理表之间使用联接和并集。只需双击逻辑表将其打开,并使用联接或并集。

逻辑层使您能够更轻松地针对各种分析方案合并数据。现在,您可以使用和创建星形和雪花架构形式的规范化数据模型,以及具有不同粒度事实表的灵活模型。

有关详细信息,请参见Tableau 数据模型支持的数据模型架构

基于关系的新查询语义

关系是为分析合并来自多个表的数据的一种动态、灵活的方式。关系可以是多对多,并支持完全外部联接。您无需使用 LOD 表达式(例如 FIXED)来消除关联表中的重复数据。

将关系视为两个表之间的协定。当您使用这些表中的字段构建可视化项时,Tableau 会从这些表中引入数据,使用该协定借助适当的联接生成查询。

我们建议使用关系作为合并数据的第一种方法,因为它使数据准备和分析更加轻松直观。仅在绝对需要时才使用联接(链接在新窗口中打开)

  • 没有预先选择的联接类型。您只需要选择匹配字段来定义关系(没有联接类型)。由于您不指定联接类型,因此在设置关系时将不会看到维恩图。
  • 自动和上下文感知。关系根据分析的时间和上下文来延迟进行联接。Tableau 根据可视化项中使用的字段自动选择联接类型。在分析过程中,Tableau 会智能地调整联接类型,并在数据中保留本机详细级别。您可以在可视化项中字段的详细级别查看聚合,而不必考虑基础联接。
  • 灵活。使用关系合并表时,它类似于为每个可视化项创建自定义、灵活的数据源,所有这些都在工作簿的单个数据源中。由于 Tableau 仅基于可视化项中的字段和筛选器查询所需的表,因此可以构建可用于各种分析流程的数据源。

有关详细信息,请参见关联您的数据(链接在新窗口中打开)不要害怕关系(链接在新窗口中打开)关系,第 1 部分:在 Tableau 中引入新的数据建模(链接在新窗口中打开)

注意:若转到原始联接画布,请双击顶层视图中的逻辑表(数据源的逻辑层)。您仍然可以在数据源的物理层中的表之间添加联接和并集。有关详细信息,请参见Tableau 数据模型

迁移数据源

当您在 Tableau 版本 2020.2 中打开 2020.2 之前的工作簿或数据源时,数据源将显示为画布中的单个逻辑表。您可以像以前那样继续使用工作簿。

如果数据源包含多个联接或合并的表,则会显示名为“迁移的数据”的单个逻辑表。您可以重命名“迁移的数据”表。

若要查看构成单个逻辑表的物理表,请双击该逻辑表,在物理层中将其打开。您将看到其基础物理表,包括联接和并集。

Web 制作

工作簿必须使用嵌入式数据源,您才能在 Tableau Server 或 Tableau Online 的 Web 创作中的“数据源”页面中编辑关系和性能选项。

数据提取

数据提取数据现在基于逻辑表(替换“单个表”选项)或物理表(替换“多个表”选项)进行存储。有关详细信息,请参见创建数据提取

界面不同部分的变化

“数据源”页面的变化

“数据源”页面画布现在有两个层:逻辑层和物理层。您在“数据源”页面中看到的默认视图是新的;它现在显示逻辑层,后者使用表之间的关系(“关系线”)。

您仍然可以在物理层中的表之间添加联接和并集,只需双击顶层逻辑视图中的逻辑表即可切换到物理层。有关详细信息,请参见Tableau 数据模型

数据网格

当数据源由多个相关表组成时,选择逻辑表将在下面的数据网格中显示该表的数据。对于关系,数据尚未合并,因此您会看到当前选择的逻辑表的值。如果需要对列进行转置,您必须打开逻辑表,并对数据源物理表视图中的数据进行转置。

工作表中的“数据”窗格

为了支持关系和多表分析,“数据”窗格已更新。

您将不再会在“数据”窗格中看到“维度”和“度量”标签。“维度”和“度量”字段可以按表(“按数据源表分组”)或文件夹(“按文件夹分组”)进行组织。维度显示在灰色线上方,度量则显示在每个表或文件夹的灰色线下方。在某些情况下,表一开始可能仅显示维度,或者仅显示度量。

在包含逻辑表的数据源,您将不再看到“记录数”字段。每个表以名为 TableName(Count)的字段的形式在该表的详细级别包括其记录的计数。在前面的示例中,您可以看到 Addresses(Count)、Customers(Count)LineItems(Count)

表计数 = 每个表的记录数之和。不能在表的“计数”字段上生成计算。计数为仅聚合。

注意:如果打开在视图中使用“记录数”的 2020.2 之前的工作簿,您可能会在“数据”窗格看到“记录数”字段。

如果计算字段的所有输入字段都来自同一个表,则计算字段将随其原始字段一起列出。

集和组随其原始字段一起显示在表下方。

不属于特定表或未分组在某个文件夹下的字段显示在表下方的常规区域中。其中包括:聚合计算、使用多个表中的字段的计算、记录数(如果适用)、度量名称和度量值。

查看数据

在“查看数据”窗口中,当数据源包含多个逻辑表时,每个表的行数和数据将以本机详细级别列在单独的选项卡中。

有关详细信息,请参见查看基础数据

计算字段列在包含其原始字段的表的下方。

LOD 计算不一定出现在逻辑表的“查看数据”中,因为 LOD 计算的粒度可能与表本身不同。如果 LOD 计算的维度包含单个表中的字段,则该 LOD 计算将显示在“数据”窗格中其所属的表中。

Tableau 2020.2 及更高版本中的“查看数据”列顺序更改

当您在 Tableau 2020.2 或更高版本中打开 Tableau 的早期版本的数据源时,列顺序可能会有所不同。列在“查看数据”窗口中可能以不同的方式显示,并且当您将其导出为 CSV 格式时,列顺序可能不同。

需要更改在“查看数据”口中处理列顺序的方式,以支持关系和逻辑表。

如果使用依赖于自定义列顺序的脚本,我们建议使用为“查看数据”使用 Tableau Extensions API,将基础数据下载为 CSV 格式。

使用多表数据源进行的分析的变化

使用具有多个相关表的数据源会影响分析在 Tableau 中的工作方式。由于多个关联的表具有独立的域并保留其本机详细级别,因此当您将字段拖到视图中时:

  • 系统将在数据的自然详细级别对数据进行查询。
  • 仅查询与可视化项相关的数据。
  • 表之间的关系会影响查询的结果。生成可视化项的流程可能因字段表在数据模型中彼此相关的方式或它们是否没有直接相关而异。

使用具有关系的多表数据源的好处:

  • 关系使用联接,但它们是自动的。Tableau 根据可视化项中使用的字段自动选择联接类型。在分析过程中,Tableau 会智能地调整联接类型,并在数据中保留本机详细级别。
  • Tableau 使用关系根据工作表中正在使用的字段的当前上下文,在分析期间生成正确的聚合和适当的联接。
  • 支持在单个数据源中使用位于不同详细级别的多个表,因此表示相同数据所需的数据源更少。
  • 不匹配的度量值不会被删除(不会意外丢失数据)。
  • 避免数据重复和筛选问题,这些问题有时可能由联接导致。

有关详细信息,请参见关联您的数据分析如何适用于使用关系的多表数据源以及多表分析疑难解答

若要了解关系查询工作方式的相关信息,请参见以下 Tableau 博客文章:

什么没有改变?

Tableau 中单表分析的行为未改变。对包含维度和度量混合的单个逻辑表进行分析的工作方式与 Tableau 2020.2 之前的版本一样。

仅维度可视化项

将多表数据源与相关表一起使用时:如果构建仅维度可视化项,Tableau 将使用内部联接,并且您将看不到完整的不匹配域。

若要查看维度值的部分组合,您可以:

  • 使用“显示空行/显示空列”来查看所有可能的行。单击“分析”菜单,然后选择“表布局”>“显示空行”“显示空列”。请注意,此设置还会触发日期和数字数据桶字段的密实化,这可能是不需要的。
  • 将度量从可视化项中呈现的一个表添加到视图,例如 <YourTable>(Count) 。这可确保从该表中看到维度的所有值。

可能让您惊讶的维度的不匹配值行为

当您构建使用多个逻辑表的维度的可视化项时,这种行为最初可能会令人惊讶。默认情况下,如果可视化项中的维度或行级计算的输入使用多个逻辑表中的字段,Tableau 将仅显示所有维度都具有匹配值的结果。

例如,假设有一个包含两个逻辑表“Customers”(客户)和“Purchases”(购买)的数据集,其中某些客户没有进行采购,并且在“Purchases”(购买)表中没有匹配的行。如果启用维度“[Customers].[Customer Name]”([客户].[客户名称]) ,您将看到所有客户的列表,无论他们是否进行了购买。如果随后将维度“[Purchases].[Product]”([购买].[产品]) 添加到可视化项,Tableau 将更改为仅显示进行了购买的客户,以及他们购买的产品。

这是默认行为。以下是处理此行为的几种方法:

  • 使用“显示空行/列”查看所有可能的行,并返回不匹配的维度值。单击“分析”菜单,然后选择“表布局”>“显示空行”“显示空列”。请注意,此设置还会触发日期和数字数据桶字段的密实化,这可能是不需要的。
  • 将其中一个维度转换为度量。例如,切换为使用 COUNT([Purchases].[Product]) 将保留没有进行购买的客户,并为这些客户显示“0”。如果要查看所有产品,此方法可能不可行。
  • 将具有不匹配值的表中的度量引入视图。例如,在详细信息功能区上添加 COUNT([Customers]) 会返回不匹配的客户,同时仍显示所有产品。
  • 与以前版本的 Tableau 一样,您可以在物理级别使用外部联接来联接两个表,而不是在逻辑级别关联它们。此方法将显示不匹配的值,有一些副作用。查询两个表时总是会发出查询,NULL 值将出现在可视化项和快速筛选器中,即使不使用不匹配的表中的字段,并且您将必须编写 LOD 计算来移除联接引入的任何不需要的重复项。

使用表的“计数”字段,而不是“记录数”

在包含逻辑表的数据源,您将不再看到“记录数”字段。每个表以名为 TableName(Count)的字段的形式在该表的详细级别包括其记录的计数。在前面的示例中,您可以看到 Addresses(Count)、Customers(Count)LineItems(Count)

表计数 = 每个表的记录数之和。不能在表的“计数”字段上生成计算。计数为仅聚合。

注意:如果打开在视图中使用“记录数”的 2020.2 之前的工作簿,您可能会在“数据”窗格看到“记录数”字段。

交叉表计算

可以编写跨多个表的计算。请注意,默认情况下,跨表计算使用内部联接查询语义。计算位于它引用的逻辑表之间的联接之上。此外,现在可以跨导致外部联接的表编写行级计算。

添加 Null 维度后会对计算进行求值,因此可以使用如下计算将 Null 更改为其他内容:IFNULL([Dimension], “Missing”)。

使用 SUM 的总计

使用 SUM 的总计以字段逻辑表的本机详细级别反映实际总计,而不是小计的 SUM。

由关系产生的 Null 和自动联接

在 Tableau 2020.2 中,当执行由关系产生的联接时,Tableau 不会依据 null 联接 null。

不匹配的 null 行为

向视图中添加度量时,当度量具有与维度不关联的值时,则会添加 Null 维度值。

出现此行为的原因是 Tableau 将不匹配的值(或非关联维度值)视为与基础数据源中的真正 NULL 值相同。两者的值将聚合在一起或一起进行筛选。

例如,对于 SUM(Sales),[State],每个匹配的“State”(州/省/市/自治区)都表示一个州/省/市/自治区。其“SUM(Sales)”是单个州/省/市/自治区的总和。对于不匹配的 null,“SUM(Sales)”可能反映多个州/省/市/自治区。

如果不希望出现此行为,您可以清理数据以确保度量表中的每一行与维度表中的行匹配。为此,您可以使用 Tableau Prep。或者,在工作表内,您可以通过单击“Null”并选择“排除”来筛选出 Null。执行此操作后,您可以通过在“性能选项”设置中选择“所有记录匹配”来编辑度量表和维度表之间的关系。

在“编辑筛选器”对话框中处理不匹配的 null

将筛选器应用于维度时,Null 的显示规则为:

  • 在“常规”选项卡上,可以使用复选框显式包括或排除 Null 行。
  • 在“通配符”选项卡上,该设置不会影响 Null 是否显示(因为它仅筛选出文本值,并且 Null 不会被视为文本值)。
  • 在“条件”或“前”选项卡上,使用“”以外的设置将导致筛选出“Null”州/省/市/自治区。

验证关系

有几个选项可用于验证数据模型以进行分析。为数据源创建模型时,我们建议转到工作表,选择该数据源,然后构建可视化项以浏览记录计数、预期数据、不匹配值、null 或重复的度量值。尝试跨不同的表处理字段,以确保所有内容都符合您的预期。

要查找的内容:

  • 数据模型中的关系是否为它们的表使用正确的匹配字段?
  • 添加多个匹配字段对是否会使关系更准确?
  • 从不同的表将不同的维度和度量拖到视图中会产生什么结果?
  • 您是否看到预期的行数?
  • 如果从默认设置更改了任何性能选项设置,则您在可视化项中看到的值是否符合预期? 如果不符合,您可能需要检查设置,或重置为默认值。

用于验证关系和数据模型的选项:

  • 每个表以名为 TableName(Count)的字段的形式在该表的详细级别包括其记录的计数。若要查看表的计数,请将其“计数”字段拖到视图中。若要查看所有表的计数,请在“数据”窗格中选择每个表的“计数”字段,然后在“智能显示”中单击“文本表”。
  • 在“数据”窗格中单击“查看数据”以查看每个表的行数和数据。此外,在开始创建关系之前,在分析之前或期间查看数据源中数据对于让您了解每个表的范围非常有用。有关详细信息,请参见查看基础数据
  • 将维度拖到行上以在状态栏中查看行数。若要查看不匹配的值,请单击“分析”菜单,然后选择“表布局”>“显示空行”“显示空列”。您还可以将不同的度量从可视化项中呈现的其中一个表拖到视图,例如 <YourTable>(Count) 。这可确保从该表中看到维度的所有值。

提示:如果要查看为关系生成的查询,可以使用 Tableau Desktop 中的性能记录器。

  1. 单击“帮助”菜单,然后选择“设置和性能”>“启动性能记录”
  2. 将字段拖到视图中以构建可视化项。
  3. 单击“帮助”菜单,然后选择“设置和性能”>“停止性能记录”。“性能记录”工作簿将自动打开。
  4. 在“性能摘要”仪表板中的“按时间排序的事件”下,单击“正在执行的查询”栏并查看下面的查询。

另一个更高级的选项是使用 GitHub 上的 Tableau 日志查看器(链接在新窗口中打开)。您可以使用 end-protocol.query 筛选特定关键字。有关详细信息,请从 GitHub 中的 Tableau 日志查看器 wiki 页面(链接在新窗口中打开)开始。

感谢您的反馈!