这个PowerQuery数据整理技巧,你应该会用到
当我们把Excel中的数据导入到PowerBI中,常常会遇到,数据莫名的变了,比如这列数据,在Excel中是这样显示的:
当把这个excel导入到PowerQuery编辑器后,你很可能看到的数据是这样的:
数据前面的0自动消失了,为什么会出现这种情况,以及如何避免呢?
这是因为数据导入后,PowerQuery自动检测并更改了数据类型,对于数值的数据,最前面是不会显示0的,你可以在右侧看到这个步骤:
那么解决的办法也非常简单,直接把“更改的类型”这个步骤删掉,数据就恢复为与Excel一样的格式了:
更彻底的做法是,将自动检测数据类型的功能禁用,在文件>选项>数据加载中,勾选“从不检测未结构化源的列类型和标题”:
这样设置以后,系统就不会自动检测并调整数据类型了。
不过系统不自动调整,并不是数据类型就不需要调整,在数据上载到模型之前,你仍应该根据分析的需要,手动将每个字段调整为正确的类型。
接着上面的问题再说一个技巧,如果有一列数据本来就是这样的文本:
如果需要将这样的数字,调整为8位代码,不足8位的,前面用字符0补齐,应该怎么做呢?
这种情况下有个M函数专门做这种计算,它就是Text.PadStart,用于在字符串前面补充指定的字符。
添加自定义列,写法如下:
Text.PadStart([编码],8,"0")
就得到了8位编码的效果:
如果把这个问题反过来,先有一个8位编码的字段,我们需要把前面的字符0都去掉,这些0的个数是不同的,并且在后面部分也有可能会出现0,是不能去掉的,所以不能用分列的方式来实现。
对于这种情况,仍然有M函数专门处理:Text.TrimStart,它用来清除文本字符串中的前导相同字符。
添加自定义列:
Text.TrimStart([8位编码],"0")
效果如下:
以上就是几个简单的PQ技巧,对于PowerQuery,在熟练操作界面功能的基础上,掌握一些常用的M函数,可以帮我们快速的完成数据整理。