Tableau 数据模型
- 版本 :2022.1 及更高版本
适用于: Tableau Desktop, Tableau Online, Tableau Server
您在 Tableau 中创建的每个数据源都有一个数据模型。可以将数据模型想像为一个关系图,告知 Tableau 应如何查询已连接的数据库表中的数据。
添加到“数据源”页面的画布中的表将创建数据模型的结构。数据模型可以很简单,例如单个表。或者,它可能更为复杂,因为多个表使用不同的关系、联接和并集组合。
数据模型有两个层:
您首先在“数据源”页面画布中看到的默认视图是数据源的逻辑层。使用关系(或“关系线”)来合并逻辑层中的数据。将此层想像为“数据源”页面中的“关系”画布。有关详细信息,请参见使用关系进行多表数据分析。
下一层是物理层。使用联接和并集在物理层的表之间合并数据。每个逻辑表在此层中至少包含一个物理表。将物理层想像为“数据源”页面中的“联接/并集”画布。双击逻辑表以查看或添加联接和并集。
逻辑层 | 物理层 | |
---|---|---|
关系线 = 关系 | 维恩图 = 联接 | |
具有多个相关表的数据源的顶级视图。这是逻辑层。可以使用关系(“关系线”)来合并逻辑表。它们不使用联接类型。它们就像物理表的容器。 | 双击逻辑表可将其打开并查看其物理表。可以使用联接或并集合并物理表。在此示例中,“Book”(书籍)逻辑表由三个联接的物理表(“Book”(书籍),“Award”(奖项)、“Info”(信息))组成。 |
逻辑层 | 物理层 | |
---|---|---|
“数据源”页面中的“关系”画布 | “数据源”页面中的“联接/并集”画布 | |
拖到此处的表称为逻辑表 | 拖到此处的表称为物理表 | |
逻辑表可以与其他逻辑表相关。 | 物理表可以联接或合并到其他物理表 | |
逻辑表就像物理表的容器 | 双击逻辑表可查看其物理表 | |
详细级别位于逻辑表的行级别 | 详细级别位于合并的物理表的行级别 | |
逻辑表保持独立(规范化),未合并到数据源中 | 物理表合并到定义逻辑表的单个平面表中 |
数据模型的层
您看到的数据源顶层视图是数据模型的逻辑层。您也可以将其想像为“关系”画布,因为您在此处使用关系(而不是联接)合并表。
在合并来自多个表的数据时,拖到逻辑层中的画布的每个表都必须与另一个表有关系。您无需为关系指定联接类型;在分析期间,Tableau 将根据工作表中的字段和分析上下文自动选择适当的联接类型。
您可以在数据模型的物理层中使用联接和并集来合并数据。您只能在此画布中使用转置。您可以将其想像为“关联/并集”画布。在以前的 Tableau 版本中,物理层是数据模型中的唯一层。每个逻辑表可以包含一个或多个物理表。
重要信息:您仍然可以在 Tableau 中创建使用联接和并集的单表数据源。Tableau 中单表分析的行为未改变。升级的工作簿的工作方式将与 2020.2 之前一样。
了解更多信息:有关使用关系合并数据的相关信息,也可参见以下主题和博客文章:
另请参见 Action Analytics 中有关关系的视频播客,例如为什么 Tableau 发明了关系?单击 Library(库)中的“Video Podcast”(视频播客)以查看更多信息。
了解数据模型
在以前版本的 Tableau 中,数据模型只有物理层。在 Tableau 2020.2 及更高版本中,数据模型具有逻辑(语义)层和物理层。这为您提供了更多选项,用于使用架构合并数据以适合您的分析。
在以前版本的 Tableau 中,数据源中的数据模型由单个物理层组成,您可以在其中指定联接和并集。添加到(联接或合并)物理层的表创建单个拼合的表(非规范化)以进行分析。
以前的版本 | 2020.2 及更高版本 | |
---|---|---|
在 2020.2 之前的 Tableau 版本中,数据模型只有物理层。 | 在 2020.2 及更高版本中,数据模型具有两个层:逻辑层和物理层 |
在 Tableau 2020.2 中,数据源中的数据模型在物理层上包括一个新的语义层(称为逻辑层),您可以在其中添加多个表并相互关联。逻辑层中的表不会合并到数据源中,它们保持独立(规范化),并保持其本机详细级别。
逻辑表充当已合并物理表的容器。逻辑表可以包含单个物理表。或者,它可以包含通过联接或并集合并在一起的多个物理表。
构建新模型
将一个或多个表添加到逻辑层时,实质上是为数据源构建数据模型。数据源可以由单个逻辑表组成,或者您可以将多个表拖动到画布以创建更复杂的模型。
拖到画布的第一个表将成为数据源中数据模型的根表。
拖出根表后,可以按任意顺序拖出其他表。您需要考虑哪些表应彼此关联,以及为每个关系定义的匹配字段对。
如果要创建星形架构,则首先将事实数据表拖出,然后将维度表与该表相关联会很有帮助。
删除画布中的表也会自动删除其关联的下级。如果删除根表,模型中的所有其他表也将被移除。
每个关系必须至少由一对匹配的字段组成。添加多个字段对以创建复合关系。匹配的字段对必须具有相同的数据类型。更改“数据源”页面中的数据类型不会更改此要求。Tableau 仍将使用基础数据库中的数据类型进行查询。
关系可以基于计算字段。
在定义关系时,可以使用运算符指定应该如何比较关系中使用的字段。
多表模型
若要创建多表模型,请将表拖到“数据源”页面画布的逻辑层。
拖到“数据源”页面画布的逻辑层的表必须彼此关联。将其他表拖动到逻辑层画布时,Tableau 会自动尝试基于现有键约束和匹配字段创建关系,从而定义关系。如果无法确定匹配字段,则需要选择它们。
果未检测到约束,则会创建“多对多”关系,并将引用完整性设置为“某些记录匹配”。这些默认设置是安全的选择,为您的数据源提供了最大的灵活性。默认设置支持完全外部联接,并通过在分析期间形成联接之前聚合表数据来优化查询。每个表中的所有列和行数据将可用于分析。
您可以通过双击表在任何逻辑表内添加更多数据。这将打开“数据源”页面画布的物理层。如果需要使用联接或并集,可以将要联接或合并的表拖到物理层画布中。物理表将合并在其逻辑表中。
按照创建和定义关系中的步骤来合并多个表。
单表模型
若要创建单表模型,请将表拖到“数据源”页面的逻辑层画布。然后,您可以使用“数据”窗格该表中的字段进行分析。
包含其他表的单表模型
您可以通过双击表在单个逻辑表内添加更多数据。这将打开“数据源”页面画布的物理层。如果需要使用联接或并集,可以将要联接或合并的表拖到物理层画布中。物理表将合并在其逻辑表中。
此示例在数据源的“关系”画布(逻辑层)中显示“Book”(书籍)表。双击“Book”(书籍)逻辑表将打开“联接/并集”画布(物理层)。
在此示例中,联接会将“Award”(奖项)和“Info”(信息)表与“Book”(书籍)表合并。在这种情况下,在奖项的细节级别上,“Book”(书籍)和“Award”(奖项)之间的联接将是一对多。这将复制“Book”(书籍)和“Info”(信息)的度量值。为了避免重复,您可以将“Award”(奖项)和“Info”(信息)奖与“Book”(书籍)相关联,而不是在“Book”(书籍)逻辑表内部联接它们。
支持的数据模型架构
2020.2 中引入 Tableau 的数据建模功能旨在轻松分析常见的多表数据方案(包括星形和雪花数据模型)。Tableau 数据源中支持以下类型的模型。
单表
对包含维度和度量混合的单个逻辑表进行分析的工作方式与 Tableau 2020.2 之前的版本一样。您可以使用联接、并集、自定义 SQL 等的组合来构建逻辑表。
星形和雪花
企业数据仓库中具有“星形架构”或“雪花架构”是很常见的,其中的度量包含在一个中央事实表中,维度单独存储在独立的维度表中。此数据组织支持许多常见的分析流程,包括汇总和下取分析。
这些模型可以直接使用从 Tableau 2020.2 开始提供的数据建模功能中的关系来表示。
首先将事实表拖到模型中,然后将维度表关联到事实表(在星形架构中)或关联到其他维度表(在雪花架构中)。
通常,在建模良好的星形或雪花架构中,事实表和维度表之间的关系将为多对一。如果此信息已编码在数据仓库中,Tableau 将自动使用它来设置关系的性能选项。如果没有,您可以自己设置此信息。有关详细信息,请参见使用性能选项优化关系查询。
在建模良好的星形或雪花架构中,事实表中的每个行在每个维度表中都将有一个匹配的条目。如果情况如此,并已在数据仓库完整性约束中捕获,Tableau 将自动使用此信息在性能选项中设置引用完整性设置。如果某些事实表行在维度表中没有匹配行(有时称为“延迟到达维度”或“提早到达维度”),则 Tableau 将默认在计算度量时保留所有行,但可能会在显示维度标题时删除值。有关详细信息,请参见使用性能选项优化关系查询。
度量位于多个表中的星形和雪花架构
在某些星形或雪花架构中,用于分析的所有度量都包含在事实表中。但是,通常情况下,其他感兴趣的度量可能与分析中的维度表相关。即使维度表不包含度量,在分析中,想要计数或以其他方式聚合维度值也很常见。在这些情况下,事实表和维度表之间的区别不太明显。为了在查看您的数据模型时更加清晰,我们建议首先将最精细的粒度表添加到数据源画布中,然后将所有其他表与第一个表相关联。
如果要将这些表一起联接到单个逻辑表中,维度表中的度量值将被复制,从而导致扭曲的聚合,除非您采取预防措施,使用 LOD 计算或 COUNT DEDE 对值进行去重处理。但是,如果改为在这些表之间创建关系,Tableau 将在执行联接之前聚合度量,以避免不必要重复的问题。这样,您就无需您仔细跟踪试题的详细级别。
多事实分析
Tableau 的数据建模功能支持某种形式的多事实分析。附加事实表(包含度量)可以添加到前面提到的任何模型中,只要它们仅与单个维度表关联。例如,您可以将两个或更多事实表合并在一起,以分析共享的维度,例如在类似 Customer 360 的分析中。这些事实表的详细级别可以与维度表不同,也可以彼此不同。它们还可以与维度表具有多对多关系。在这些情况下,Tableau 将确保值在聚合之前不会被复制。
如果没有与事实表相关的共享维度表,您有时可以使用自定义 SQL 或使用其他维度表的联接或并集动态生成一个维度表。
两个事实表可以在共同维度上彼此直接相关。当其中一个事实表包含公共维度的超集时,这种类型的分析效果最佳。
不支持的模型
与多个共享维度表关联的多个事实表。在某些用例中,通常有多个事实表与多个共享维度表关联。例如,您可能有与两个公用维度表(“Date”(日期)和“Customer”(客户))关联的两个事实表(“Store Sales”(商店销售额)和“Internet Sales”(Internet 销售额))。通常,此类方案需要在数据模型中创建循环关系。2020.2 中不支持循环关系。
您可以通过合并物理层中的某些表来接近这种类型的模型。例如,您或许能够将“Store Sales”(商店销售额)和“Internet Sales”(Internet 销售额)合并到单个表中,然后可将后者与“Date”(日期)和“Customer”(客户)关联。或者,您或许能够交叉联接“Date”(日期)和“Customer”(客户)以创建单个维度表,然后可将后者与“Store Sales”(商店销售额)和“Internet Sales”(Internet 销售额)关联。
直接在共享维度上关联三个或更多事实表。尽管可在逻辑层中构建此模型,但您可能会看到不需要的结果,除非您只使用单个表中的维度。
数据模型中关系的要求
在关联表时,定义关系的字段必须具有相同的数据类型。更改“数据源”页面中的数据类型不会更改此要求。Tableau 仍将使用基础数据库中的数据类型进行查询。
不能基于地理字段定义关系。
数据模型中不支持循环关系。
无法定义已发布数据源之间的关系。
限制使用关联表的好处的因素
表中的脏数据(即创建时未考虑结构良好的模型且包含多个表中度量值和维度混合的表)可能会使多表分析更加复杂。
使用数据源筛选器将限制 Tableau 在数据中执行联接剔除的能力。联接剔除是定义 Tableau 如何通过移除不必要的联接来简化查询的术语。
具有许多跨关系的不匹配值的表。
将多个事实数据表与多个维度表相关联(尝试对共享或一致的维度建模)。