---
schema_version: "1"
id: 554ebdbb06ff4600e5f4ad834f70486d3d745d3e81fb1e97d972a24caaefa5d1
title: Tableau 数据模型
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/public/desktop/datasource_datamodel.md
canonical_url: https://help.tableau.com/v0.0/public/desktop/zh-cn/datasource_datamodel.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 798123f310b34312ebb210587536a02f08ce4efa893a3f412401197b46a57302
description: Understand the Tableau data model's logical and physical layers and build single- or multi-table models.
---
[跳转到主要内容](#main-content)

# Tableau 数据模型

您在 Tableau 中创建的每个数据源都有一个数据模型。可以将数据模型想像为一个关系图，告知 Tableau 应如何查询已连接的数据库表中的数据。

添加到“数据源”页面的画布中的表将创建数据模型的结构。数据模型可以很简单，例如单个表。或者，它可能更为复杂，因为多个表使用不同的关系、联接和并集组合。

数据模型有两个层：

- 您首先在“数据源”页面画布中看到的默认视图是数据源的_逻辑层_。使用关系（或“关系线”）来合并逻辑层中的数据。将此层想像为“数据源”页面中的“关系”画布。有关详细信息，请参见[“使用关系进行多表数据分析”](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_multitable_normalized.htm)。
- 下一层是物理层。使用[联接](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_relationships_learnmorepage.htm#where-did-joins-go)和并集在物理层的表之间合并数据。每个逻辑表在此层中至少包含一个物理表。将物理层想像为“数据源”页面中的“联接/并集”画布。双击逻辑表以查看或添加联接和并集。

<table style="width: 865px; margin-left: 0; margin-right: auto;"><colgroup><col style="width: 413px;"><col style="width: 15px;"><col style="width: 437px;"></colgroup><thead><tr><th>逻辑层</th><th>&nbsp;</th><th>物理层</th></tr></thead><tbody><tr><td style="text-align: center;">关系线 = 关系</td><td>&nbsp;</td><td style="text-align: center;">维恩图 = 联接</td></tr><tr><td style="text-align: left;"><img src="https://help.tableau.com/v0.0/public/desktop/zh-cn/Img/data_model_logicallayer_ex1_sm.png" alt="具有多个相关表的数据源的顶级视图。"></td><td style="text-align: center;">&nbsp;</td><td style="text-align: left;"><img src="https://help.tableau.com/v0.0/public/desktop/zh-cn/Img/data_model_physlayer_ex1_sm.png" alt="数据模型中“Book”（书籍）、“Award”（奖项）和“Info”（信息）表之间的关系图。"></td></tr><tr><td class="caption">具有多个相关表的数据源的顶级视图。这是逻辑层。可以使用关系（“关系线”）来合并逻辑表。它们不使用联接类型。它们就像物理表的容器。</td><td>&nbsp;</td><td class="caption">双击逻辑表可将其打开并查看其物理表。可以使用联接或并集合并物理表。在此示例中，“Book”（书籍）逻辑表由三个联接的物理表（“Book”（书籍）,“Award”（奖项）、“Info”（信息））组成。</td></tr></tbody></table>

| 逻辑层 |   | 物理层 |
| --- | --- | --- |
| “数据源”页面中的“关系”画布 |   | “数据源”页面中的“联接/并集”画布 |
| 拖到此处的表称为逻辑表 |   | 拖到此处的表称为物理表 |
| 逻辑表可以与其他逻辑表相关。 |   | 物理表可以联接或合并到其他物理表 |
| 逻辑表就像物理表的容器 |   | 双击逻辑表可查看其物理表 |
| 详细级别位于逻辑表的行级别 |   | 详细级别位于合并的物理表的行级别 |
| 逻辑表保持独立（规范化），未合并到数据源中 |   | 物理表合并到定义逻辑表的单个平面表中 |

## 数据模型的层

您看到的数据源顶层视图是数据模型的[逻辑层](#dm_log_phys)。您也可以将其想像为“关系”画布，因为您在此处使用关系（而不是联接）合并表。

在合并来自多个表的数据时，拖到逻辑层中的画布的每个表都必须与另一个表有关系。您无需为关系指定联接类型；在分析期间，Tableau 将根据工作表中的字段和分析上下文自动选择适当的联接类型。

您可以在数据模型的[物理层](#dm_log_phys)中使用联接和并集来合并数据。您只能在此画布中使用转置。您可以将其想像为“关联/并集”画布。在以前的 Tableau 版本中，物理层是数据模型中的唯一层。每个逻辑表可以包含一个或多个_物理表_。

> [!TIP]
> 
> **重要信息**：您仍然可以在 Tableau 中创建使用联接和并集的单表数据源。Tableau 中单表分析的行为未改变。升级的工作簿的工作方式将与 2020.2 之前一样。

**了解更多信息**：有关使用关系合并数据的相关信息，也可参见以下主题和博客文章：

- [关系与联接有何不同](https://help.tableau.com/v0.0/public/desktop/zh-cn/datasource_relationships_learnmorepage.htm)
- [使用关系进行多表数据分析](https://help.tableau.com/v0.0/public/desktop/zh-cn/datasource_multitable_normalized.htm)
- [关联您的数据](https://help.tableau.com/current/pro/desktop/zh-cn/relate_tables.htm)
- [关系，第 1 部分：在 Tableau 中引入新的数据建模](https://www.tableau.com/about/blog/2020/5/relationships-part-1-meet-new-tableau-data-model)
- [关系，第 2 部分：提示和技巧](https://www.tableau.com/about/blog/2020/5/relationships-part-2-tips-and-tricks)
- [关系，第 3 部分：跨多个相关表提出问题](https://www.tableau.com/about/blog/2020/6/relationships-part-3-asking-questions-across-multiple-related-tables)

另请参见 [Action Analytics](https://action-analytics.com/library/) 中有关关系的视频播客，例如[为什么 Tableau 发明了关系？](https://action-analytics.com/ep-1-why-did-tableau-invent-relationships/)单击 [Library（库）](https://action-analytics.com/library/)中的“Video Podcast”（视频播客）以查看更多信息。

## 了解数据模型

数据模型具有逻辑（语义）层和物理层。这为您提供了更多选项，用于使用架构合并数据以适合您的分析。

![数据模型图显示一个由关系链接的两个表的逻辑层，以及一个说明如何从物理表构建逻辑表的物理层。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_layers_sm.png)

每个逻辑表都在物理层中包含物理表。

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

<table style="width: 850px; margin-left: 0; margin-right: auto;"><colgroup><col style="width: 350px;"><col style="width: 20px;"><col style="width: 465px;"></colgroup><thead><tr><th>物理层数据源</th><th>&nbsp;</th><th>逻辑层数据源</th></tr></thead><tbody><tr><td><img src="https://help.tableau.com/v0.0/public/desktop/zh-cn/Img/data_model_physical_layer.png" alt="数据模型中四个物理表之间的连接图。"></td><td>&nbsp;</td><td><img src="https://help.tableau.com/v0.0/public/desktop/zh-cn/Img/data_model_logical_physical.png" alt="具有逻辑层和物理层的数据模型图。"></td></tr></tbody></table>

逻辑层中的表不会合并到数据源中，它们保持独立（规范化），并保持其本机详细级别。

逻辑表充当已合并物理表的容器。逻辑表可以包含单个物理表。或者，它可以包含通过联接或并集合并在一起的多个物理表。

### 向逻辑表中添加描述

逻辑表可以具有出现在其工具提示中的描述。这些工具提示仅显示在“数据源”选项卡中。

若要添加描述，请执行以下操作：

1. 在画布上选择一个表
2. 在底部窗格中，单击**“描述”**旁边的编辑图标（铅笔）。
3. 在富文本编辑器中输入描述

**注意**：仅在 Web 制作中，描述中的任何链接都是实时链接，可以单击直接打开。

![表的工具提示，其中包含字段描述和底部窗格的描述部分周围的突出显示](/tableau/next/zh-cn/public/desktop/zh-cn/Img/environ_workspace_datasource_tabledescriptions.png)

## 构建新模型

将一个或多个表添加到逻辑层时，实质上是为数据源构建数据模型。数据源可以由单个逻辑表组成，或者您可以将多个表拖动到画布以创建更复杂的模型。

- 拖到画布的第一个表将成为数据源中数据模型的根表。
- 拖出根表后，可以按任意顺序拖出其他表。您需要考虑哪些表应彼此关联，以及为每个关系定义的匹配字段对。
- 如果要创建星形架构，则首先将事实数据表拖出，然后将维度表与该表相关联会很有帮助。
- 删除画布中的表也会自动删除其关联的下级。如果删除根表，模型中的所有其他表也将被移除。
- 每个关系必须至少由一对匹配的字段组成。添加多个字段对以创建复合关系。匹配的字段对必须具有相同的数据类型。更改“数据源”页面中的数据类型不会更改此要求。Tableau 仍将使用基础数据库中的数据类型进行查询。
- 关系可以基于计算字段。
- 在定义关系时，可以使用运算符指定应该如何比较关系中使用的字段。

有关关系的详细信息，请参见[关联您的数据](https://help.tableau.com/current/pro/desktop/zh-cn/relate_tables.htm)中的[创建和定义关系](https://help.tableau.com/current/pro/desktop/zh-cn/relate_tables.htm#create-and-define-relationships)。

### 多表模型

- 若要创建多表模型，请将表拖到“数据源”页面画布的逻辑层。  
      
    ![若要创建多表模型，请将表拖到“数据源”页面画布的逻辑层。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_multitableanalysis.gif)

拖到“数据源”页面画布的逻辑层的表必须彼此关联。将其他表拖动到逻辑层画布时，Tableau 会自动尝试基于现有键约束和匹配字段创建关系，从而定义关系。如果无法确定匹配字段，则需要选择它们。

果未检测到约束，则会创建“**多对多**”关系，并将引用完整性设置为“**某些记录匹配**”。这些默认设置是安全的选择，为您的数据源提供了最大的灵活性。默认设置支持完全外部联接，并通过在分析期间形成联接之前聚合表数据来优化查询。每个表中的所有列和行数据将可用于分析。  

您可以通过双击表在任何逻辑表内添加更多数据。这将打开“数据源”页面画布的物理层。如果需要使用联接或并集，可以将要联接或合并的表拖到物理层画布中。物理表将合并在其逻辑表中。

按照[创建和定义关系](https://help.tableau.com/current/pro/desktop/zh-cn/relate_tables.htm#create-and-define-relationships)中的步骤来合并多个表。

### 单表模型

- 若要创建单表模型，请将表拖到“数据源”页面的逻辑层画布。然后，您可以使用“数据”窗格该表中的字段进行分析。  
      
    ![采用单表分析的数据模型。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_singletableanalysis.gif)

#### 包含其他表的单表模型

您可以通过双击表在单个逻辑表内添加更多数据。这将打开“数据源”页面画布的物理层。如果需要使用联接或并集，可以将要联接或合并的表拖到物理层画布中。物理表将合并在其逻辑表中。

![具有两个联接的数据模型。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_singletable_joins.gif)

此示例在数据源的“关系”画布（逻辑层）中显示“Book”（书籍）表。双击“Book”（书籍）逻辑表将打开“联接/并集”画布（物理层）。

在此示例中，联接会将“Award”（奖项）和“Info”（信息）表与“Book”（书籍）表合并。在这种情况下，在奖项的细节级别上，“Book”（书籍）和“Award”（奖项）之间的联接将是一对多。这将复制“Book”（书籍）和“Info”（信息）的度量值。为了避免重复，您可以将“Award”（奖项）和“Info”（信息）奖与“Book”（书籍）相关联，而不是在“Book”（书籍）逻辑表内部联接它们。

## 支持的数据模型架构

Tableau（版本 2020.2 及更高版本）中的数据建模功能旨在简化对常见多表数据场景（包括星型和雪花型数据模型）的分析。Tableau 数据源中支持以下类型的模型。

### 单表

对包含维度和度量混合的单个逻辑表进行分析的工作方式与 Tableau 2020.2 之前的版本一样。您可以使用联接、并集、自定义 SQL 等的组合来构建逻辑表。

![标有“客户”的对象具有三个蓝色条形，堆叠在两个绿色条形之上。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_schema1.png)

### 星形和雪花

企业数据仓库中具有“星形架构”或“雪花架构”是很常见的，其中的度量包含在一个中央事实表中，维度单独存储在独立的维度表中。此数据组织支持许多常见的分析流程，包括汇总和下取分析。

![客户对象用线条来显示与维度 1、维度 2 和维度 3 对象的关系。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_schema2.png)

这些模型可以直接使用 Tableau 2020.2 及更高版本中提供的数据建模功能中的关系来表示。

首先将事实表拖到模型中，然后将维度表关联到事实表（在星形架构中）或关联到其他维度表（在雪花架构中）。

通常，在建模良好的星形或雪花架构中，事实表和维度表之间的关系将为多对一。如果此信息已编码在数据仓库中，Tableau 将自动使用它来设置关系的性能选项。如果没有，您可以自己设置此信息。有关详细信息，请参见[使用性能选项优化关系查询](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_relationships_perfoptions.htm)。

在建模良好的星形或雪花架构中，事实表中的每个行在每个维度表中都将有一个匹配的条目。如果情况如此，并已在数据仓库完整性约束中捕获，Tableau 将自动使用此信息在性能选项中设置引用完整性设置。如果某些事实表行在维度表中没有匹配行（有时称为“延迟到达维度”或“提早到达维度”），则 Tableau 将默认在计算度量时保留所有行，但可能会在显示维度标题时删除值。有关详细信息，请参见[使用性能选项优化关系查询](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_relationships_perfoptions.htm)。

### 度量位于多个表中的星形和雪花架构

在某些星形或雪花架构中，用于分析的所有度量都包含在事实表中。但是，通常情况下，其他感兴趣的度量可能与分析中的维度表相关。即使维度表不包含度量，在分析中，想要计数或以其他方式聚合维度值也很常见。在这些情况下，事实表和维度表之间的区别不太明显。为了在查看您的数据模型时更加清晰，我们建议首先将最精细的粒度表添加到数据源画布中，然后将所有其他表与第一个表相关联。

![数据模型说明了如何将客户细分为三个维度。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_schema3.png)

如果要将这些表一起联接到单个逻辑表中，维度表中的度量值将被复制，从而导致扭曲的聚合，除非您采取预防措施，使用 LOD 计算或 COUNT DEDE 对值进行去重处理。但是，如果改为在这些表之间创建关系，Tableau 将在执行联接之前聚合度量，以避免不必要重复的问题。这样，您就无需您仔细跟踪试题的详细级别。

### 多事实分析

在版本 2024.2 及更高版本中，Tableau 的数据建模功能通过使用多事实关系支持多事实分析。有关如何创建多事实关系数据模型的详细信息，请参见：

- [关于多事实关系数据模型](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_mfr_multiple_base_tables.htm)
- [何时使用多事实关系模型](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_mfr_when_to_use.htm)
- [构建多事实关系数据模型](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_mfr_build.htm)

多事实关系模型是一种具有多个基表的数据模型，当模型中也存在共享表时，它允许模型中存在不相关的表。在分析过程中，共享表中的字段根据共同的维度（例如在同一地点或同一时间发生）将原本不相关的数据表“拼接”在一起。关系的所有优点都得以保留，包括保留每个表的粒度或本机详细级别。

与单基表数据模型类似，Tableau 根据可视化项的结构确定后台使用的最佳联接类型。但在多事实关系模型中，联接选项扩展为包括外部联接和交叉联接，以处理不同级别的关联性。有关详细信息，请参见[“关于多事实关系数据模型”](https://help.tableau.com/current/pro/desktop/zh-cn/datasource_mfr_multiple_base_tables.htm)。

**注意**：在版本 2020.2 至 2024.1 中，只有当事实表（包含度量）与单个维度表相关时，才可以将它们添加到星型和雪花模型中。

例如，您可以将两个或更多事实表合并在一起，以分析共享的维度，例如在类似 Customer 360 的分析中。这些事实表的详细级别可以与维度表不同，也可以彼此不同。它们还可以与维度表具有多对多关系。在这些情况下，Tableau 将确保值在聚合之前不会被复制。

![数据模型说明了如何将客户细分为三个维度，并展示了销售和活动之间的联系。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_schema5.png)

如果没有与事实表相关的共享维度表，您有时可以使用自定义 SQL 或使用其他维度表的联接或并集动态生成一个维度表。

两个事实表可以在共同维度上彼此直接相关。当其中一个事实表包含公共维度的超集时，这种类型的分析效果最佳。

![数据模型显示销售和活动之间的关系。](/tableau/next/zh-cn/public/desktop/zh-cn/Img/data_model_schema6.png)

有多种情况可能表明您应该构建具有多个基表而不是单个基表数据源的多事实关系模型：

- **循环关系**。不支持循环关系。如果您尝试构建具有循环的数据源，请使用多事实关系并将下游表作为另一个基表。
- **一致的维度**和**上下文 OR 关系**。如果您有一系列在同一组关系子句（例如日期和地点）上相关的表，则应该将这些维度拉出来并制成共享表。
    - 这尤其有用，因为多个关系子句必须全部为真（逻辑上为 AND），表才能与这些记录相关。
    - 相反，如果您想要分析一次可能为真的记录（上下文 Or），则可以通过设置具有共享维度表的数据模型来提供这种灵活性。
- **等量混合**。如果您正在使用混合，但希望获得没有主要和次要数据源的等效混合，请构建一个数据模型，将混合中的数据源与共享表中的链接字段相结合。

## 数据模型中关系的要求

- 在关联表时，定义关系的字段必须具有相同的数据类型。更改“数据源”页面中的数据类型不会更改此要求。Tableau 仍将使用基础数据库中的数据类型进行查询。
- 不能基于地理字段定义关系。
- 数据模型中不支持循环关系。

### 限制使用关联表的好处的因素

- 表中的脏数据（即创建时未考虑结构良好的模型且包含多个表中度量值和维度混合的表）可能会使多表分析更加复杂。
- 使用数据源筛选器将限制 Tableau 在数据中执行联接剔除的能力。联接剔除是定义 Tableau 如何通过移除不必要的联接来简化查询的术语。
- 具有许多跨关系的不匹配值的表。