要写得一手好代码,离不开一款顺手的编辑器。VBA有VBE,DAX有DAX Studio,而M。。。什么都没有。。。
没有怎么办?那就自己造呗~
使用Notepad++,打造一款自己专属的M语言编辑器,它可以:
①智能高亮显示
②关键字和函数智能提示
③参数智能提示
原文由张文[......]
作者: 施阳
Csv.Document
官方说明:
返回表形式的CSV文档内容。columns:如果指定了一个记录,且delimiter、extraValues、encoding为Null,则所有参数Delimiter、Columns、Encoding、CsvStyle和QuoteStyle都将从该记录中获取。delimiter可以采用[......]
动态获取相对路径
尽管PQ非常灵活,但仍然存在一些不太方便的地方,比如文件路径为绝对路径,无法动态刷新,做好的报告发给同事后必须修改路径才能刷新。但是PQ做不到的,工作表函数也许能做到。
首先我们打开报告,新建一个sheet,先来测试一下,在任一单元格输入=CELL("filename")
,返回了当前文件的动态路径[......]
获取类常用函数总结
[......]
提取各指标TOP5
题目:
如图,从左表到右表,提取各指标中TOP5所对应的姓名。
解法1:
常规思路,逆透视后分组,排序并添加索引,筛选出TOP5然后展开。
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],[......]
提取系数和
题目:
如图,需要提取多项式中每一项中的系数,如第一行的系数为3和2,并对其求和,最终结果为5。
解法:
本题主要考察对文本信息的拆分和提取,通过多次拆分不难得到结果。
其中一个难点在于如第2行,"N150+E70"系数均为1,但拆分后得不到正确的结果,所以用try Number.F[......]
隔列获取纵向合并
题目:
在工作中我们经常会遇到很多不规范的表格,比如这样:
一个sheet里塞了很多张格式一模一样的表,但是横向排列的,非常不便于做分析,所以需要把这些表格进行合并。如果这种独立表格的数量不多我们可以手动框选区域分别插入表格,然后用PQ追加查询,但是如果表格有很多显然不现实。
[......]
从网页中批量提取URL
题目:
根据指定URL,提取网页中所有锚链接,即href=""中引号之间的部分。
解法:
使用Text.FromBinary
和Web.Contents
的组合获取目标网页的HTML源码当作文本处理,然后使用Text.PositionOf
获取共有多少个分隔符,List.Tr[......]
Text.Before/After/BetweenDelimiter(s)
官方说明:
返回text中指定的startDelimiter和endDelimiter之间的部分。可选数字startIndex指示要考虑哪一次出现的startDelimiter。可选列表startIndex指示要考虑哪一次出现的startDelimiter,以及应从输入的开头还是结尾编制索引。en[......]
强迫症终结者:Table.ColumnNames
在PQ中我们经常需要对数据进行展开,而这个动作通常只是需要点一下鼠标不需要我们写公式的,所以一般也不会注意到如何去简化。比如如下一组数据,对其先分组再展开,虽然得到的结果还是它。
先完全界面化操作,不作任何修改,看下系统自动生成的公式:
let 源 = Excel.Curren[......]