Power BI 微课堂 | 第16课:用 Power Query 高级编辑器修改 M 代码

published: 2023-09-26

今天,我们来学习:用 Power Query 高级编辑器修改 M 代码,了解 M 代码的作用及其所代表的含义。


》M 代码简介

熟悉 Power Query 的用户都知道,每当在 Power Query 中清理数据时,系统会自动生成一条条步骤记录,以便用户能够随时对这些步骤进行重新排序、删除和修改。

虽然你所执行的每个清理步骤可能都是在图形界面中创建的,但 Power Query 会在后台使用 M 代码来记录。因此,除了前端可视化的操作窗格外,你还可使用 Power Query 高级编辑器来读取合并的步骤,或对 M 代码直接进行读取和修改。

对于有一定数据库使用经验的分析师来说,可通过了解 M 代码并对其进行自定义来满足更个性化的需求,或快速找出导致报错的步骤。


》高级编辑器 - M 代码

想要进入 M 代码编辑页面很简单,只需在 Power Query 中创建清理数据的步骤后,切换至菜单栏中的“视图”选项卡,并选择“高级编辑器”即可。

在“高级编辑器”窗口中,每一个清理步骤会用 1-2 行 M 代码来表示。

想要理解 M 代码,其实不用专门学习 M 语言,你可以更改某些内容来进行测试。例如,如果需要更改连接的数据库名称,可以直接在代码中完成,然后选择“完成”。

此外,你可能会注意到,M 代码是自上而下编写的。首行一般代表了你所连接的数据源类型,如本地文件、数据库或其他来源。然后,M 代码会记录你选择了哪些数据表进行数据准备。

后续清理过程中的步骤,可以通过 #(井号)和 =(等号)进行辨别。井号用来表示每一次操作的动作,而等号左侧就是记录你这次操作的步骤名称,等号右侧是你操作的具体细节。

如下面的这个语句,表示在上一个拆分步骤的结果下,更改了字段类型:

#"Changed Type" =Table.Transform(olumnlypes(#"Split (olumn by Delimiter",ff"shipaddress.1", type text),("shipaddress.2", type text)))

需要注意的是,当你需要重新排列步骤的顺序时,请务必谨慎。因为这可能会破坏上下文语句中的依赖关系,导致最终结果出现变化,或者后续步骤出现报错。

此外,高级编辑器中会使用 “in” 语句写入查询步骤名称。通常,最后一个查询步骤用作表示 in final data set 的结果。