知识库

以列表而非单独行或标记的形式显示维度成员


发布时间: 03 Sep 2015
上次修改日期: 20 Jul 2023

问题

如何以列表而非单独行或标记的形式显示所有维度成员。例如,为每个类别将子类串连为一个逗号分隔的列表。 

环境

Tableau Desktop

答案

选项 1:使用 Tableau Deskop 中的表计算

步骤 1:创建计算
  1. 使用类似于如下的计算创建一个名称类似于“Create the list”(创建列表)的计算字段:
    IF FIRST()= 0
    THEN MIN([Sub-Category])
    ELSE PREVIOUS_VALUE("") + ", " + MIN([Sub-Category])
    END
  2. 使用类似于如下的计算创建一个名称类似于“Sub-Category List Label”(子类列表标签)的计算字段:
    WINDOW_MAX([Create the list] )

    编辑附带的工作簿中的计算字段,了解有关这些计算的工作方式的其他说明。
步骤 2:创建条形图视图
  1. 将“[Category]”(类别)和“[Sub-Category]”(子类)拖到“行”功能区
  2. 将“[Sales]”(销售额)拖到“列”功能区
  3. 将“[Sub-Category]”(子类)拖到标记卡上的“颜色”
    注意:必须在视图中包括“[Sub-Category]”(子类),计算才能正常工作。如果最终视图不应包括工具提示中列出的维度,请参阅“高级选项 1”工作表/选项卡,以获取附加示例工作簿中的附加说明 - 列出维度值_v2018.1.twbx
  4. 将“[Sub-Category List]”(子类列表)拖到标记卡上的“工具提示”
  5. 在“工具提示”上右键单击“[Sub-Category List]”(子类列表),并选择“计算依据”>“Sub-Category”(子类)
注意:如果将其他维度添加到视图,则可能必须更新“计算依据”设置。有关如何使用“计算依据”设置控制表函数输出的详细说明,请参见使用表计算转换值

选项 2:使用 Tableau Prep

  1. 添加一个步骤
  2. 在“Clean 1”(清理 1)中右键单击“[Sub-Category]”(子类),并选择“复制字段”
  3. 添加聚合
  4. 在“Aggregate 1”(聚合 1)中,执行以下操作:
    1. 将类别添加到分组字段
    2. 在“其他字段”列表中查找“Sub-Category”(子类),单击“分组”,并选择“最小值”(这会将“ MIN(Sub-Category)”添加到“聚合字段”)
    3. 在“聚合字段”中右键单击“MIN(Sub-Category)”,并选择“重命名”。将其重命名为类似于“Sub-Category (first)”(子类(第一个))的名称
    4. 将“MAX(Sub-Category-1)”添加到“聚合字段”
    5. 将“MAX(Sub-Category-1)”重命名为类似于“Sub-Category (last)”(子类(最后一个))的名称
  5. 将“Aggregate 1”(聚合 1)拖到“Clean 1”(清理 1)上,并将“Aggregate 1”(聚合 1)拖到“联接”上
  6. 从“Join 1”(联接 1)中添加一个步骤
  7. 在“Clean 2”(清理 2)中,使用类似于如下的公式创建一个名为“Filtered Sub-Category”(经筛选的子类)的计算字段
    IF [Sub-Category] != [Sub-Category (first)]
    AND [Sub-Category] != [Sub-Category (last)]
    THEN [Sub-Category]
    END
  8. 在“Clean 2”(清理 2)中,复制“[Filtered Sub-Category]”(经筛选的子类)
  9. 在“Clean 2”(清理 2)中,移除“[Category-1]”(类别 1)和“[Sub-Category]”(子类)
  10. 重复步骤 3-9,根据需要创建任意多个字段。在此示例中,包含最多子类的类别具有 9 个子类,因此准备流程需要 5 个聚合步骤来创建 10 个字段,以便不会遗漏任何子类。
  11. 在最后一个“清理”步骤中,使用类似于如下的公式创建一个名称类似于“Grouped sub-categories”(分组的子类)的计算字段:
    IF ISNULL([Sub-Category (first)])
    THEN ''
    ELSE [Sub-Category (first)] + ' '
    END
    
    + IF ISNULL([Sub-Category (second)])
    THEN ''
    ELSE [Sub-Category (second)] + ' '
    END
    
    + IF ISNULL([sub-category (third)])
    THEN ''
    ELSE [sub-category (third)] + ' '
    END
    
    + IF ISNULL([sub-category (third to last)])
    THEN ''
    ELSE [sub-category (third)] + ' '
    END
    
    + IF ISNULL([Sub-Category (second to last)])
    THEN ''
    ELSE [Sub-Category (second to last)] + ' '
    END
    
    + IF ISNULL([Sub-Category (last)])
    THEN ''
    ELSE [Sub-Category (last)] + ' '
    END

    上面的计算合并创建的所有子类字段。如果子类字段具有 NULL 值,则必须将 NULL 替换为一个空字符串(也称为两个引号 ''),因为将值与 NULL 值合并始终会生成 NULL。
  12. 输出数据
此文章是否已解决问题?