3.3 中级结构整理:数据转置
数据转置(Pivot)是对数据存储结构的调整,很少用于数据库文件,通常多用于不规范的本地文件处理。
由于受Excel数据透视表的影响,Pivot通常被翻译为“透视”,不过Prep Builder的Pivot是指转置,而非聚合,所以不要和“数据透视表”混淆。早期的Prep Builder版本被翻译为“透视”,后来在笔者的建议下,其中文翻译从“透视”改为“转置”,这样我们就能更清晰地了解这个功能的含义了:把列字段转为行,或者把行字段改为列,Prep Builder中的图标也非常形象。经常使用Excel的读者基本都用过其中的一个小功能“选择性粘贴”,其中包含了一个特别细微但重要的选项就是“转置”,不熟悉的读者不妨现在打开Excel尝试一下。在学习Tableau的过程中,遇到关于“透视”的内容,一定要多加注意,要弄清楚是指与Excel数据透视表一样的聚合,还是指这里的转置。
Tableau Prep Builder在2018年年中刚刚推出英文版时,Pivot的功能仅仅指行至列转置,2019年增加了列至行转置,两种转置的标识如图3-22所示。
图3-22 Prep Builder的转置功能
转置的必要性来自数据库的需求和分析的需要。Tableau所青睐的数据是特别长的数据(数据行数多),随着业务交易不断增加交易行,而不是特别宽的数据(即俗称的“大宽表”)。
转置分为两个步骤:确定转置方式→输入转置字段。在列至行转置和行至列转置时,又稍有差异。
3.3.1 Prep Builder和Desktop的列至行转置
最常用的转置是列至行。比如在图3-23中,每个地区中多年的销售额是以列的方式存储的。为了进行连续多年的销售趋势分析,需要将列字段转置为行,用一个“日期”字段合并多个列字段:“年份”。
图3-23 需要列至行的数据
常规的方法如图3-24所示。首先,点击数据后面的“+”,在下拉菜单中选择“转置”命令;其次,在弹出的“设置”窗格中,按住Shift键连续多选所有要转置的列字段;再次,将其拖曳到中间区域,自动完成转置;最后,双击转置生成的列字段,将名称修改为“年”和“任务值”。
图3-24 Prep Builder转置:列至行
随着版本的升级,Tableau的转置功能已经今非昔比,不仅更强大,而且操作更简单。如图3-25所示,在任意一个流程节点中,同时选择多个列字段,用鼠标右击,在弹出的下拉菜单中选择“将列转置为行”命令,即可自动添加转置节点,实现与上述操作相同的效果。
图3-25 Prep Builder在整理环节快速实现列至行转置
这个方法也适用于Desktop的数据连接阶段,方法与在Prep Builder中完全一致。图3-26展示了Desktop的数据连接界面,多选要转置的列字段,用鼠标右击,在弹出的下拉菜单中选择“转置”命令即可实现相同的效果。
图3-26 Desktop数据连接时完成转置
不过,Desktop的转置功能仅限于完成简单的一次性转置,无法在一个数据连接中完成多次转置,也不能使用通配符的方式。在第4章的案例中,笔者会介绍一个使用通配符转置与多次转置的案例,相比而言,Prep Builder更擅长此类复杂的数据处理。
3.3.2 Prep Builder的行至列转置
行至列转置是Prep Builder 2019版的新功能,旨在把某一个字段内的数据,转为列字段,相当于把图3-25中右侧数据再转置回左侧年份为列字段的样式。为此,通常“行至列”之前要先做聚合和字段清理工作,先把数据聚合到年的级别,再做“行至列”转置,这样才能避免过多的空值。聚合的方法参见3.4节。
行至列转置与列至行转置稍有不同,如图3-27所示,首先,要将默认勾选的“列至行”改为“行至列”。其次,需要同时指定列字段(维度字段)和聚合字段(度量字段),因此需要分别拖曳两个字段到中间对应的位置中。
图3-27 Prep Builder转置:行至列
行至列转置的结果类似于Desktop中的数据交叉表,因此,如果只是临时的转置数据,则也不妨直接从Desktop的视图中导出数据交叉表。