PQ实战 | 数据统计维度突然需要转换怎么办?

今天也是论坛上找的一个实际问题,函数等方法可能已经有人写过了,目前还没有Power Query M函数的写法,所以我们就来填补一下,进一步感受PQ的强大和强化知识点!这是PQ实战第几期忘记了,文末推荐阅读总结了一下!
需求:应该不用我解释了吧!突然换统计维度,就是这么坑!如下图
其实到这里,我也还没开始写M函数,但是脑中已经有了点思路.
说一下目前的思路:人员姓名按符号拆分成list,然后展开,按照姓名重新分组,使用Table.FromColumns来构建结果!(如果你听不懂,也不要着急,毕竟只是我的大概思路)
下面我们来实现看一下:

01 |  时间日期格式化显示处理

加载进入PQ,日期格式会发生变化
如果我们要显示成XX月XX日,还需要借助一个新的方式来转化一下:
= Table.TransformColumns( 源,{{"日期",each DateTime.ToText(_,"MM月dd日")}})
涉及到两个函数:
1、Table.TransformColumns
语法:Table.TransformColumns(表,{{字段,each 转化方式},{},{}……}
可以针对多个字段按需要显示的格式转换或者做其他处理
2、DateTime.ToText
语法:DateTime.ToText(日期时间,文本显示格式)
注意其中的MM不能是小写,小写在PQ中是分的意思!
当然我们也可以不处理,最后一次处理,本质一样!

02 | 文本拆分成列表

因为我们不想新增一列处理,所以我们就在上步的基础上增加一个人员处理即可!
正好也能进一步学习Table.TransformColumns,多列转换!
Text.Split 这个拆分函数比较简单,我们也多次使用了,不再啰嗦,拆分出来是一个List!

03 | 展开List

手工点击两边展开的箭头,或者直接写都可以!

04 | 按姓名重新分组

Table.Group按照人员安排分组,分组后统计的列为对应的所有日期!

05 | 转换成表

这就成了!
Table.FromColumns(对一个的多列内容形成的list,对应的标题)
以上是简单的讲解,最后我们调整一下,在PQ高级编辑器中来看一下完整的M函数写法:
加载到工作表中的效果:
插播一条:本公众号一般都是0点左右推送,考虑到大家晚上都需要早点休息,从下次开始,推送时间基本在早晨7:30左右!

本文由“壹伴编辑器”提供技术支持

其实大部分新人初期很难一下子就有思路处理。
个人的建议:还是先把table、list和record三大类函数全部过一遍,做到基本知道对应的需求是否有类似的函数,在实战中配合#shared,边查编写,一定要有一定量的练习,比如把之前函数解法的问题,看看使用PQ是否能处理,尽量处理一遍!当然去找实际案例更好……

本文由“壹伴编辑器”提供技术支持

(0)

相关推荐