问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

深入了解PowerQuery的透视列功能

创作时间:
作者:
@小白创作中心

深入了解PowerQuery的透视列功能

引用
1
来源
1.
http://www.360doc.com/content/24/0530/11/75900155_1124733218.shtml

PowerQuery的透视列功能是数据处理中的一个重要工具,它可以帮助用户将一维表转换为二维表,实现数据的快速整理和展示。本文将详细介绍透视列的基本用法,以及在遇到重复值时的处理方法,帮助读者掌握这一实用技能。

基本透视操作

多列结构的二维表转一维表,PowerQuery可以这样做。而一维表转二维表,或者说长表转换为宽表,相对要简单一些,用到的是“透视列”功能,比如下面这个表格:

如果想把这个数据转换为每个产品一列,可以通过在PQ中使用透视列功能来实现,数据导入到PQ后,选中产品列,点击“透视列”功能,“值列”选择数据,如下图:

就可以轻松实现透视后的二维表效果:

对于值列是数值的,默认聚合方式是求和,也可以调整为最大值、最小值、不要聚合等方式,展开高级选项可以更改:

如果值列是文本,默认聚合方式是计数,如果想显示为文本本身,就选择最后一项"不要聚合"(数值型字段也可以选择不聚合)。

处理重复值

透视这个功能本身很简单,不过当分类有重复值时,选择不要聚合就会报错,比如上面的数据变成下面这样:

透视时聚合方式选择“不要聚合”,有重复值的单元格则会出错,点击Error可以看到如下信息:

Expression.Error: 枚举中用于完成该操作的元素过多。

对于这种问题,如果你想把重复的多个值显示在一个单元格中,可以通过修改M公式的方式来解决。

不要聚合默认的M公式是这样的:

= Table.Pivot(更改的类型, List.Distinct(更改的类型[产品]), "产品", "数据")

改成下面这样:

= Table.Pivot(更改的类型, List.Distinct(更改的类型[产品]), "产品", "数据",each Text.Combine(_,"、"))

也就是Table.Pivot最后面增加一个参数:each Text.Combine(_,"、")

就可以实现重复值合并到一个单元格的效果:

对于有重复的情况,如果需求不是放到一个单元格中,而是分别放到多行中,比如上面的数据,透视后2022应该有两行,分别显示A和D重复的两个数据,这种需求也可以实现,可以先添加一个辅助列。

这个辅助列是根据年度和产品两列来添加索引,具体添加方式可以参考这篇文章中的分组法:PowerQuery添加索引,这几种情况你应该知道怎么做

添加后效果如下:

然后选中产品列,进行透视,

透视后的效果如下:

这样就实现了重复值用多行显示的效果(处理完成后可以删掉索引列)。

总结

以上就是关于PowerQuery中透视列的用法,以及特殊情况的处理,希望对你有帮助。

关于透视列,除非特殊需要,一般不建议在数据整理阶段进行这种操作,大多数时候其实一维的长表结构更适合后续的分析;即使展示时需要透视的效果,也可以利用Excel的数据透视功能,或者PowerBI的矩阵,简单拖拽字段得到。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号