透视列(Pivot)和逆透视列(Unpivot)是在Excel当中就经常使用的一对数据聚合和拆分方法,在Power BI桌面应用中也提供了同样的功能。
透视列操作是将列下所有的N个非重复数据转换成N个新列,然后对原始数据进行汇总合并来计算新列中的每一行值。也就是说,透视列有将行数据转换成列数据的能力。
例如,选择Country列做透视列的操作,Power BI会提示Country列中的内容会被用来创建新列,而后面的Sales Volume列则会根据Country列中的内容进行聚合“求和”操作来生成相应的列值。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200504220153394.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2plc3NpY2Ffc2VpeWE=,size_16,color_FFFFFF,t_70#pic_center)
逆透视列与透视列的操作相反,它可以将列转换为行,并对数据进行拆分操作。逆透视列操作主要针对的是有多列数据的表单,这类表单的特点是一般有一个主列,该列中数值多数情况下都是非重复值;而其他数据列类型基本相同,其数值都是对主列中数据某一属性的描述。对于这种有一定汇总关系的表单,可以将主列外的其他多列数据合并成一个列,即将列装换成行,然后将主列中原始值扩展成多个重复数值与合并后的新列产生对应关系,以便进行后续分析计算。
例如,对上面透视操作结果获得的表单,选中Product列,之后使用“逆透视其他列”
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200504221034814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2plc3NpY2Ffc2VpeWE=,size_16,color_FFFFFF,t_70#pic_center)
目前,Power BI对逆透视列操作提供了三个选项,其功能区别如下:
- 逆透视列:后台调用了M语言中的Table.UnpivotOtherColumns函数。该操作意味着对当前列进行逆透视操作,列中数据将被转换成行,未选中列保持不变。
- 逆透视其他列:后台也是调用了M语言中的Table.UnpivotOtherColumns函数,是逆透视列操作的反选操作。使用此选项意味着对选中列以外的其他列进行逆透视操作,选中列保持不变。
- 仅逆透视选定列:后台调用了M语言中的Table.UnpivotColumns函数。该操作意味着仅仅对当前选中列做逆透视操作。
“逆透视列”/“逆透视其他列选项”和“仅逆透视选中列”选项的区别在于,当有新的列添加到表单当中时,“逆透视列”和“逆透视其他列”选项拥有自动将新列进行逆透视操作的能力,而“仅逆透视选中列”选项则不会对新列进行处理。
两类操作之所以有这样的区别在于,“逆透视列”和“逆透视其他列”使用的是Table.UnpivotOtherColumns函数,该函数明确定义的是不需要进行逆透视的列,不在定义范围内的其他列默认都要进行逆透视操作。所以当数据源中出现新列时,就会被进行逆透视操作。而“仅透视选定列”使用的则是Table.UnpivotColumns函数,该函数明确定义了需要进行逆透视操作的列,不在定义范围内的列都不会做逆透视操作。因此,当数据源中出现新列时,也不会被进行逆透视操作。