使用性能选项优化关系查询
性能选项是定义关系中两个表之间的基数(唯一性)和引用完整性(匹配记录)的可选设置。这些设置可帮助 Tableau 在分析期间优化查询。
- 如果您不确定要选择什么,请使用 Tableau 指明的推荐默认设置。使用默认值是安全的,在分析期间将自动生成正确的聚合和联接。如果您不知道基数或引用完整性,则无需更改这些设置。
- 如果您知道数据的形状,则可以选择更改这些设置来表示两个表中的记录之间的唯一性和匹配。
在许多分析方案中,使用关系的默认设置将为您提供分析所需的所有数据。在某些情况下,您可能需要调整“性能选项”设置,以便更准确地描述数据。有关使用关系来合并和分析数据的更多详细信息,请参见关联您的数据(链接在新窗口中打开)和此 Tableau 博客文章:关系,第 1 部分:在 Tableau 中引入新的数据建模(链接在新窗口中打开)。
基数和引用完整性设置的含义
基数选项
基数设置确定 Tableau 在分析期间自动联接数据之前或之后是否聚合表数据。
- 如果字段值不唯一,或者您不知道,请选择“多”。在分析期间形成联接之前,Tableau 将聚合相关数据。
- 如果字段值是唯一的,请选择“一”。在分析过程中,相关数据将在聚合之前联接。当关系中的字段值唯一时,正确设置此选项将可优化工作簿中的查询。但是,当字段值不唯一时选择“一”可能会导致视图中显示重复的聚合值。
注意:选择“一”会将记录视为好像每个键值是唯一的,并且最多只有一行具有 null 值。
引用完整性选项
引用完整性设置确定在分析期间用于为度量获取维度值的联接类型。
- 如果字段中的某些值在其他表中没有匹配项,或者您不知道,请选择“某些记录匹配”。在分析期间,Tableau 使用外部联接来为度量获取维度值。所有度量值都将显示在视图中,即使是不匹配的度量。
- 如果字段中的值保证在其他表中具有匹配项,请选择“所有记录匹配”。此设置将在分析期间生成更少、更简单的联接,并优化查询。如果此表中存在不匹配的值,则在分析期间您可能会看到不一致的结果(视图中不匹配的值已移除或缺失)。
注意:选择“所有记录匹配”会将记录视为用于关系的字段中不存在 null 值。 在分析期间,Tableau 使用内部联接来为度量获取维度值。默认情况下,Tableau 永远不会联接 null 键。
有关关联基数和引用完整性概念的详细信息,请参见关联基数和引用完整性。
在何处使用联接?
您仍然可以在数据源的物理层中指定表之间的联接。双击逻辑表以转到联接画布。
每个顶层逻辑表至少包含一个物理表。打开逻辑表以查看、编辑或创建其物理表之间的联接。右键单击逻辑表,然后单击“打开”。或者,只需双击表即可将其打开。
创建数据源时,数据源有两个层。顶层是数据源的逻辑层。使用关系在逻辑层中的表之间合并数据。
下一个层是数据源的物理层。使用联接在物理层的表之间合并数据。有关详细信息,请参见数据模型中的逻辑表和物理表(链接在新窗口中打开)。
有关使用性能选项的提示
如果您知道数据的形状,则可以使用性能选项中的可选设置来建立表相对于彼此的关联基数(一对一、一对多、多对多),并指示引用完整性(一个表中的值始终在其他表中具有匹配项)。
不要将性能选项中的设置想像为“是”和“否”,而是要其想像为“是”和“我不知道”。如果确定表的值是唯一的,请选择“一”。 如果确定一个表中的每条记录与另一个表中的一条或多条记录匹配,请选择“所有记录匹配”。否则,请保留默认设置不变。
如果您不确定数据的形状,请使用默认设置。当 Tableau 无法检测数据中的这些设置时,默认设置为:
- 基数:多对多
- 引用完整性:某些记录匹配
如果 Tableau 在数据中检测到关键关系或引用完整性,则会使用这些设置,并指示为“已检测到”。
若要重新应用默认设置,请单击“恢复为默认值”。
定义的术语
关联基数是指字段(列)或字段组合中包含的数据的唯一性。当要分析的表包含许多行数据时,查询可能会很慢(并且会影响整个数据源的性能),因此我们建议您根据表之间相关列的基数来选择一种合并数据的方法。
- 低关联基数:当相关列有很多重复数据时。例如,名为“Products”(产品)的表可能包含一个“Category”(类别)列,其中包含三个值的:“Furniture”(家具)、“Office Supplies”(办公用品)和“Technology”(技术)。
- 高关联基数:当相关列具有高度唯一的数据时。例如,名为“Orders”(订单)的表可能包含一个“Order Id”(订单 ID)列,其中包含每个产品订单的唯一值。
引用完整性意味着一个表将始终在另一个表中具有匹配的行。例如,“Sales”(销售额)表始终在“Product Catalog”(产品目录)表中具有匹配的行。