使用正则表达式,本身power query里是没有正则的,但借助一些方法,可以实现。
今天利用个简单的数据清洗案例分享下power query里怎样调用javascript语言使用正则表达式,
直接用M写也可以,但这里用正则比较简单一点,先看看纯M的套路
下面是使用正则的套套路
接下来分享下,怎样通过调用javascript来使用正则,M里有一个函数Web.Page,专门用于解析网址的,可以利用他解析js里的内容,如下
Data里有一个Table,深化一下,发现还有Table一直深化
然后我们发现这步深化是个固定模式 [Data]{0}[Children]{0}[Children]{1}[Text]{0}
接着就可以测试下写正则了
以上了解后就可以正式开始今天的练习,为了方便使用一般情况下大叔会把这部分定义成一个自定义的函数
fx = (s,r)=>Web.Page("<script>document.write( '"&s&"'.match(/"&r&"/gi) )</script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}
首先把所有数据合并为一条文本
接着观察,我们发现要提取的内容就是对应项目后面的数字
很可惜的是pq里的正则不支持正向的零宽的,所以想一步到位全部提取数字还是有点麻烦,不过没关系,只要对应的字符串提取到,后面处理也很方便的。
接着把项目,替换成+号,当然可以再用正则replace一次,这里大叔就直接用没pq里的方法操作
最后套上eva
分享结束,感谢观看,Thanks!