知识库

无法将度量转换为维度


发布时间: 01 May 2013
上次修改日期: 17 Mar 2023

问题

在创建计算字段时,Tableau Desktop 可能会将字段识别为度量,而不是维度。尝试将字段转换为维度时,可能无法进行。

环境

Tableau Desktop

解决方案

选项 1:添加 FIXED 语句

详细级别 (LOD) 函数 FIXED 可以转换为维度。根据原始计算,确切的解决方案会有所不同,但请记住,计算作为一个整体必须是非聚合的(FIXED、非聚合的字段、参数和常量文字值都是非聚合的)。请参见以下示例:
 
示例 1
只能是度量:
IF SUM([SALES]) < 100
THEN "low"
ELSE "High"
END	
可以转换为维度:
IF { FIXED [Region] : SUM( [Sales] ) } < 100
THEN "low"
ELSE "High"
END	
 
示例 2
只能是度量:
AVG( 
   IF { FIXED [Region] : SUM( [Sales] ) } < 100 
   THEN "low" 
   ELSE "High" 
   END 
)
可以转换为维度:
{FIXED [Category] : AVG(
   IF { FIXED [Region] : SUM( [Sales] ) } < 100
   THEN "low"
   ELSE "High"
   END
) }
 
示例 3
只能是度量:
ATTR( [Category] ) + " value"
可以转换为维度:
{ FIXED [Order ID] : MIN( [Category] ) } + " value"
 
注意:ATTR() 必须替换为 MIN(),因为 ATTR() 是一个表函数,不能在 FIXED 表达式中使用。如果视图中的一个分区(行、单元格、条形图、线点等)中有多个唯一的 [类别] 值,ATTR() 将返回 NULL,这有助于识别数据质量问题。另一方面,MIN() 将始终返回最小值,即字符串值的第一个字母顺序。只要 MIN( [类别]) 固定为一个维度或维度组合,并且总是只有一个类别值,就不会有问题。
 

选项 2:删除聚合

有时实际上并不需要聚合。例如,{ FIXED [Region] : SUM( [Sales] } 返回每个地区的总销售额,但如果数据源在每个地区只有一条记录,则 [Sales] 将返回相同的值。
 
示例 1
只能是度量:
IF SUM([SALES]) < 100
THEN "low"
ELSE "High"
END	
可以转换为维度:
IF [Sales] < 100
THEN "low"
ELSE "High"
END	

 

选项 3:使用 Tableau 生成的数据桶字段

在某些情况下,可以用 Tableau 生成的数据桶字段替换原始计算。请参见依据连续度量创建数据桶
了解有关说明。
 

选项 4:在 Tableau Prep 中进行计算

Tableau Prep 的输出将始终是非聚合的,因此始终可以转换为维度。根据最初的计算,Tableau Prep 中所需的步骤会有所不同。通常,要在 Tableau Prep 中复制 SUM( [Sales]) 这样的表达式,您将需要使用聚合步骤

表格计算不能是非聚合的,因为它们不能放在详细级别函数内。某些表格计算可以在 Tableau Prep 中重新创建。例如,LOOKUP() 有时可以替换为移位自联接。请参见在 Tableau Prep 中查找表格计算
 

选项 5:联接数据而不是使用数据混合

辅助数据源中的字段必须聚合。这是数据混合的局限性,没有解决方法。考虑跨数据库联接Tableau Prep 中的联接
 

原因

如果计算字段中使用了聚合,则无法将度量转换为维度,原因是计算结果是动态的。

例如,当 [Region] 位于行功能区上时,以及当 [Category] 位于行功能区上时,SUM( [Sales] ) 将返回不同的结果。但是,表达式 {FIXED [Region] : SUM( [Sales] ) } 将始终是每个地区的总销售额。 添加 FIXED 语句告诉 Tableau 如何计算 SUM(),然后告诉 Tableau 如何根据每个记录所属地区的总销售额对其进行分组。

 

其他信息

Tableau 为什么要用维度和度量?

Tableau 利用非常不同的数据源之间共享的数据的公共属性,以便就如何显示数据做出明智的决定。

例如,您的数据源包含一个带有数值的字段,但该字段被命名为“ID”。  当您将“ID”添加到行功能区中,您会为每个 ID 获得一行,而不是获得将所有 ID 值加在一起的无意义的条形图。  Tableau 如何知道要这么做?  名为“ID”的字段是一种特殊情况,默认情况下被视为维度。

维度包含用于对其他数据进行分组的数据,因此 Tableau 知道维度通常应该是标题而不是图表,即使维度包含数字数据。 

维度度量是数据管理中的概念,为 Tableau 提供了有关数据显示方式的线索。有关 Tableau 如何处理维度和度量的更多信息,请参阅维度和度量,蓝色和绿色

 
此文章是否已解决问题?