知识库

在将数据格式设置为文本列表时创建视图


发布时间: 23 May 2018
上次修改日期: 11 Oct 2023

问题

如何使用结构化文本(或字符串)、列表,而不是每个可能值的行来创建视图。

本文包含两个示例:创建一个宠物名称文字云,但是基础数据中的每一行都会以逗号分隔列表的形式列出一个家庭中的所有宠物。或者计算出每户家庭宠物的平均年龄,其中每行包含一个逗号分隔的年龄列表。

具体与下表类似:
                                         
家庭 ID宠物名称宠物年龄
1Rocky、Doug、Spot1, 6, 10
2Spot、Whiskers4, 5
3Rocky、Spot、Mittens2, 4, 6
4Minnie、Mickey1, 1
5Spot12
6Bella、Rosa7, 9
7Whiskers、Mittens、Snowball3, 2, 1
8Snowball、Cloudy、Spot7, 8, 2
9Spot9
10Spot、Rocky2, 1
11Spot7
12Spot、Rocky2, 5

 

环境

  • Tableau Desktop
  • Tableau Prep(可选)

答案

选项 1:使用 Tableau Prep 和 Tableau Desktop
附件中的“先拆分,然后转置 Prep flow.tfl”和“从 values.twbx 列表查看”可以演示以下说明:
步骤 1 - 清理 Tableau Prep 中的数据
  1. 打开 Tableau Prep 并连接到原始数据源
  2. 将鼠标悬停在“原始数据”上方,单击加号,并选择“添加步骤”
  3. 在清理 1 中,右键单击包含值列表的字段,此示例使用 [宠物名称],并选择“拆分值”> “自定义拆分…”
  4. 在“自定义拆分”对话框中,执行下列操作并单击“拆分”
    • 输入分隔符 ,
    • 对于“拆分”操作,选择“全部”
  5. 将鼠标悬停在“清理 1”上,单击加号,并选择“添加转置”
  6. 将 [宠物名称 - 拆分 1]、[宠物名称 - 拆分 2] 和 [宠物名称 - 拆分 3] 拖到“转置 1 值”列
  7. 将鼠标悬停在“转置 1”上方,单击加号,并选择“添加输出”
  8. 在“输出”中,运行流程
步骤 2 - 在 Tableau Desktop 中正常构建视图
创建文字云的方法,请参见创建文字云。有关创建平均值的说明,请参见 Tableau 中的数据聚合

选项 2:仅使用 Tableau Desktop 创建文字云
使用 Tableau Desktop 内置的自定义拆分功能拆分宠物名称列表,并为每个拆分的字段创建数据源副本。然后创建一个主宠物名称列表,并将主宠物列表连接到不同拆分字段上的每个重复数据源。 附带的工作簿使用示例数据来演示这些说明。
步骤 1 - 拆分字符串
  1. 连接到附带 Excel 文件的“原始数据”工作表
  2. 在“数据源”选项卡中,右键单击 [宠物名称] 并选择“自定义拆分…”
  3. 在“自定义拆分”对话框中,执行下列操作并单击“确定”:
    1. 对于“使用分隔符”,输入不带引号的 ","
    2. 对于“拆分”操作,选择“全部”
步骤 2 - 为每个拆分字段创建数据源副本
  1. 导航到一个工作表
  2. 导航到“数据”>“原始数据”(要拆分的字符串)>“复制”
  3. 重复步骤 5
步骤 3 - 联接主宠物列表
  1. 连接到附带 Excel 文件的“主列表”工作表
  2. 导航到“数据”>“编辑关系...”
  3. 在“关系”对话框中,执行以下操作
    1. 对于“主数据源”,选择“主列表”(要拆分的字符串)
    2. 对于“辅助数据源”,选择“原始数据”(要拆分的字符串)
    3. 选择“自定义”单选按钮
    4. 单击“添加...”
    5. 在“添加/编辑字段映射”对话框中选择“宠物名称主列表”和“宠物名称 - 拆分 1”,然后单击“确定”
    6. 对于“辅助数据源”,选择“原始数据”(要拆分的字符串)(副本)
    7. 选择“自定义”单选按钮
    8. 单击“添加...”
    9. 在“添加/编辑字段映射”对话框中选择“宠物名称主列表”和“宠物名称 - 拆分 2”,然后单击“确定”
    10. 对于“辅助数据源”,选择“原始数据”(要拆分的字符串)(副本 2)
    11. 选择“自定义”单选按钮
    12. 单击“添加...”
    13. 在“添加/编辑字段映射”对话框中选择“宠物名称主列表”和“宠物名称 - 拆分 3”,然后单击“确定”
步骤 4 - 创建计算并构建视图
  1. 使用类似于下列计算的计算创建一个名称类似于“文字大小”的计算字段:
    	ZN(SUM([Original Data (string to split)].[Number of Records]) )
    	ZN(SUM([Original Data (string to split) (copy 2)].[Number of Records]))
    	ZN(SUM([Original Data (string to split) (copy)].[Number of Records]))
  2. 将 [宠物名称主列表] 拖到“标记”卡上的“文本”
  3. 将 [文字大小] 拖到“标记”卡上的“大小”
  4. 在“标记”卡上的下拉菜单中选择“文本”
 
选项 3:仅使用 Tableau Desktop 创建平均值
步骤 1 - 拆分字符串
  1. 连接到附带 Excel 文件的“原始数据”工作表
  2. 在“数据源”选项卡中,右键单击 [宠物年龄] 并选择“自定义拆分…”
  3. 在“自定义拆分”对话框中,执行下列操作并单击“确定”:
    1. 对于“使用分隔符”,输入不带引号的 ","
    2. 对于“拆分”操作,选择“全部”
步骤 2 - 创建计算并构建视图
  1. 右键单击数据窗格中的 [宠物年龄 - 拆分 1],并选择“更改数据类型”>“数字(整数)”
  2. 右键单击数据窗格中的 [宠物年龄 - 拆分 1],并选择“转换为度量”
  3. 为所有拆分字段重复步骤 1-2
  4. 使用类似于下列计算的计算创建一个名称类似于“每个家庭的平均宠物年龄”的计算字段:
    SUM( ZN([Pet Age - Split 1])
    + ZN([Pet Age - Split 2])
    + ZN([Pet Age - Split 3]) )
    /
    ( COUNT([Pet Age - Split 1])
    + COUNT([Pet Age - Split 2])
    + COUNT([Pet Age - Split 3]) )
  5. 将 [每个家庭的平均宠物年龄] 拖到“标记”卡上的“文本”
  6. 将 [家庭 ID] 拖到“行”功能区

其他信息

由于必须复制原始数据源,因此,选项 2 可能会导致性能问题。为了减少影响,在复制数据源之前,请考虑仅为文字云视图创建数据源,并创建尽量小的数据源。

可以通过删除字段未被使用的表和添加数据源筛选器来减小数据源的大小。如果使用提取,请单击“提取数据”对话框中的“隐藏所有未使用的字段”按钮。
此文章是否已解决问题?