M语言之在【自定义列】中编写M公式

有时需要在查询表中添加一些包含特定计算规则的列,以下M公式可以实现:

只是“徒手”写这样的M公式太难为初学者,这时可以通过使用【自定义列】功能,仅编辑指定的“计算规则”部分,而其他部分则任由“异空间”自动生成。
例如,“文档”文件夹中有一个叫“04-数据源.xlsx”的工作簿(素材:04-数据源.xlsx),新建一个Excel工作簿以后,依次选择【数据】选项卡下的【获取数据】→【来自文件】→【从工作簿】选项,定位目标文件,将其导入。在【导航器】里选择“Sheet1”以后单击【转换数据】按钮。如此一番“折腾”进入“异空间”,就可以看到一个只包含“品名”“数量”“单位”和“单价”4列数据的查询表,如图4-3所示。
现在需要在查询表中添加一个“打折单价”列,计算规则是在“单价”列的基础上乘以 0.8,可以如图 4-4 所示,使用【添加列】选项卡下的【自定义列】功能。但是,【自定义列】对话框里的自定义列公式(M公式)无法自动生成,只能在对话框里手工输入。将光标移到等号后,输入以下公式:
其中的“[单价]”即是对“单价”列数据的引用,可以手工输入,也可以通过双击【可用列】里的“单价”写入,“*0.8”只能手工输入。再修改【新列名】为“打折单价”,然后单击【确定】按钮,新的“打折单价”列就会依据M公式所设置的计算规则出现在查询表的最后一列。
要点提示:自定义列
【Power Query编辑器】→【添加列】→【自定义列】→修改新列名→编写自定义M公式→【确定】
添加自定义列以后,自动生成的步骤名叫“已添加自定义”。如此笼统的叫法完全无法体现这一步骤的实际意义,将其重命名为“添加打折列”才更符合规范操作的要求。重命名的方法很简单,只要右击“已添加自定义”步骤,调出快捷菜单,再选择其中的【重命名】选项,输入新的步骤名后按【Enter】键即可,如图 4-5 所示。
由于M公式千变万化,使得【自定义列】所能实现的效果也精彩纷呈,前几章介绍的所有添加列的功能都可以用【自定义列】来实现。例如,想把“品名”列里的第一个字都提取出来作为“品名简称”,就可以在【自定义列】里使用M函数“Text.Start”,它的功能是对目标列的内容从左往右提取指定个数的字符。
在【自定义列】对话框中输入函数名的时候,会有函数名提示框出现,利用上下键选取需要输入的那个函数,再按【Enter】键或【Tab】键,完整的函数名就会自动填写,如图 4-6 所示。
再输入一个半角的左小括号以后,还会有参数的提示窗格出现。如果对这个函数的用法不是太熟悉,可以借助这一提示窗格填写参数,如图 4-7 所示。由此提示窗格可以看出,M函数“Text.Start”有两个参数,第一个参数是需要提取内容的目标列,双击【可用列】里的“品名”即可;第二个参数是要提取出几个字符,此处填写 1。参数之间以半角逗号分隔。参数输入完成后不要忘了还有一个半角的右小括号。
当然,不借助提示窗格功能,直接手工完成函数名与参数的输入也可以。但是,这样做的话很可能会出现拼写错误。如图 4-8 所示,公式输入完成以后,对话框的左下角虽然显示“未检测到语法错误”,然而单击【确定】以后却提示“无法识别名称 'text.start'。请确保其拼写正确”。
“text.start”拼写不正确吗?确实不正确,因为M语言是一种区分字母大小写的语言,正确的拼写是“Text.Start”。在编辑M语言时,尤其是直接敲键盘编辑时,“异空间”不会自动修正大小写,所以需要特别注意这一点。对于一些M函数名和参数,不能确定其大小写的,还是借助提示窗格输入更保险。
(0)

相关推荐