知识库

确定多个维度是否包含相同的文本值


发布时间: 21 Jun 2017
上次修改日期: 11 Oct 2023

问题

如何比较多个字符串维度,以确定同一行上每个维度的成员值是否都相同,并都会忽略 NULL 值。

如果所有维度都具有相同的值,而且都会忽略 NULL 值,则返回该值,否则将返回标记为有多个值的一个文本值。

环境

Tableau Desktop

答案

单击以展开解决方案
选项 1:转置数据
  1. 对数据进行转置,以便所有维度名称在一个字段中,而所有维度成员都在另一个字段中。
  2. 对于某些数据源,可以在 Tableau Desktop 连接中转置字段。有关如何在 Tableau Desktop 中转置数据的详细信息,请参阅从列到行转置数据
  3. 选择分析 > 创建计算字段
  4. 为计算字段命名为“比较”,输入以下公式并单击确定: 
    { FIXED [ID] :
    IF COUNTD([Pivot Field Values]) <= 1
    THEN MIN([Pivot Field Values])
    ELSE "Mulitple Values"
    END
    }
单击以展开解决方案
选项 2:使用计算
如果无法更改数据结构,可以使用一系列计算轮番比较每个集中的两种计算,进而返回相同的结果。例如,如果有四个维度,名称分别为 [A]、[B]、[C] 和 [D],那么我们将创建两个“一级”计算:一个用于比较 [A] 和 [B],另一个用于比较 [C] 和 [D]。然后,我们将创建一个“二级”计算,来比较计算字段 [AB] 和 [CD]。
附带的示例工作簿使用示例数据来演示以下指引:
  1. 选择“分析”>“创建计算字段”
  2. 将计算字段命名为“比较一级 - AB”,输入以下公式并单击确定: 
    IF ISNULL( [Dimension A] )
    OR ISNULL( [Dimension B] )
    THEN IFNULL( [Dimension A],  "" ) +  IFNULL( [Dimension B], "" )
    ELSEIF [Dimension A] = [Dimension B]
    THEN [Dimension A]
    ELSE "Multiple Values"
    END
    }
  3. 对每组的二个维重复步骤 1 和 2
  4. 选择分析>创建计算字段
  5. 将计算字段命名为“比较二级 - ABCD”,输入以下公式并单击确定: 
    IF [comparison lvl 1 - AB] = ""
    OR [comparison lvl 1 - CD] = ""
    THEN [comparison lvl 1 - AB] + [comparison lvl 1 - CD]
    ELSEIF [comparison lvl 1 - AB] = [comparison lvl 1 - CD]
    THEN [comparison lvl 1 - AB]
    ELSE "Multiple Values"
    END
    }
  6. 对每个集的两个 1 级计算重复步骤 4 和 5
  7. 选择分析 > 创建计算字段
  8. 将计算字段命名为“比较三级”,输入以下公式并单击确定: 
    IF [comparison lvl 2 - ABCD] = ""
    OR [comparison lvl 2 - EFGH] = ""
    THEN [comparison lvl 2 - ABCD] + [comparison lvl 2 - EFGH]
    ELSEIF [comparison lvl 2 - ABCD] = [comparison lvl 2 - EFGH]
    THEN [comparison lvl 2 - EFGH]
    ELSE "Multiple Values"
    END
    }
此文章是否已解决问题?