Power Query从入门到精通
上QQ阅读APP看书,第一时间看更新

1.5 Power Query的底层语言——M语言

很多人在第一次接触Power Query时,觉得非常难以下手。由于它的执行语言M语言的底层语法和我们所学习的Excel函数的语法规则完全不同,很多人在学习一段时间都放弃了。那么,什么是Power Query的M语言呢?

M语言是Power Query的底层应用语言,Power QueryGUI 界面的操作都将会转换为M语言。通过界面能够完成80%的工作,另外20%我们不能通过界面完成,只能通过编写相应的M语言处理过程来实现数据的处理,一个非常明显的案例就是自定义函数的使用。在默认的界面下并不会显示整个M语言的处理过程,需要单击“高级编辑器”按钮才能看到当前处理过程的M语言执行步骤。不管是Excel还是Power BI,M语言开启高级编辑器都是一样的操作,在“数据”选项卡中选择“获取数据”→“启动Power Query编辑器”命令进入Power Query编辑器界面,如图1.28所示。

图1.28  进入Power Query编辑器

在Excel的Power Query编辑器界面中,直接单击如图1.29所示的“高级编辑器”按钮即可进入高级编辑器界面。

图1.29  Excel中的Power Query高级编辑器

Power BI进入高级编辑器的方法和Excel 略有不同。在Power BI中调用Power Query,首先通过“编辑”按钮进入Power Query编辑器界面,在Power Query编辑器中进入高级编辑器界面的方法相较于Excel更加简单,毕竟Power Query已经深度集成到Power BI中。在Power BI的界面中单击“转换数据”按钮,进入Power Query编辑器的主界面后单击“高级编辑器”按钮即可进入高级编辑器界面,如图1.30所示。

图1.30  Power BI中的高级编辑器

在实际的使用过程中,Power Query的所有操作步骤将通过Power Query翻译成M语言进行数据的再处理,图1.31展示了当前高级编辑器的功能。

图1.31  高级编辑器提供的功能

●Tips

关于Power Query的M语言,我们将在第3章详细讨论它的语法规则和使用方法。

1. M语言的使用场景

当然,Power Query的M语言应用场景不只是应用在Power BI和Excel中,它还具有其他广泛的应用场景,目前我们可以在以下产品的使用场景中应用到M语言。

■ SSAS分析服务。

■ Office 365的Flow。

■ SSIS数据集成服务。

■ Azure Data Factory 服务。

相信随着微软数据类产品分类的增多和增强,Power Query的应用场景将会越来越广泛。

在微软的最新各个产品中,Power Query的产品集成度越来越高,究竟是什么原因让微软选择Power Query?主要源于Power Query的以下特性。

■ 简单易用。

■ 集成性佳。

■ 快速处理各类数据。

2. Power Query的学习路径

Power Query这么多优点,该怎么去学习呢?很多人迫切希望了解Power Query全景知识和它提供的相应功能,但对于Power Query的底层M语言来说,一开始就进行自定义函数的构建当然也是不可能的,这里有相应的学习路径来进行由浅入深的学习,帮助读者更好地理解Power Query的整体脉络,同时也可以更深入地理解Power Query提供的各类数据集成和清洗功能。

图1.32是一张Power Query的学习成长路径图,通过该图可以很轻松地理解Power Query整体的知识结构。

Power Query从简单到复杂可以分成两个部分,大部分简单的操作可以通过UI界面完成,如下所示。

■ 数据连接:实现各类不同的数据源导入。

■ 数据删除:按照实际需求实现行列数据的删除。

■ 数据排序:根据需求进行数据行的排序。

■ 数据转换:依据实际需求完成数据格式的转换。

数据添加

图1.32  Power Query的学习成长路径图

■ 数据添加:按照实际需求完成数据内容的添加。

■ 合并数据:合并两个或多个表数据。

有一部分比较复杂的任务没有办法通过UI界面完成,相对来说学习难度会稍微大一点,这些内容如下所示。

■ 简单函数:利用现有的Power Query简单函数进行简单应用。

■ 高级函数:使用复杂的Power Query函数实现数据的计算。

■ 自定义M语言函数:建立可以重用的自定义函数实现函数的重用。

从图1.32能够看出,难度最高的依然是自定义M函数,如果能够非常自如地使用自定义M函数来实现各类不同的Power Query场景,也就可以顺利地完成整个Power Query从低到高的学习。