Power Query查询编辑器提供了清晰直观的操作环境,透过查询列表的导览,可快速切换和管理各个建立的查询;右侧的查询设定工作窗格则鉅细靡遗地列出所有查询步骤,方便使用者追蹤和修改。工具列上也提供常用功能选项,诸如筛选、排序和格式转换。要成为资料整理大师,您肯定要熟悉Power Query查询编辑器作业环境。
延续前一实作的範例,万一就是那么心急,在汇入csv档案的导览画面过程,就直接按下[汇入]按钮,并未进入Power Query查询编辑器的画面,而是返回Excel工作表环境,此时是否还来得及后悔地回到Power Query查询编辑器吗?当然没问题,您可以点按[资料]索引标籤里[取得资料]命令按钮,在下拉式功能选单中点选[启动Power Query编辑器]功能选项,或者在视窗右侧的[查询与连线]工作窗格里,点按两下先前建立的[NBA球队]查询名称。
查询编辑器介面
进入Power Query查询编辑器后,即可到目前已经执行的查询步骤,以及当下的查询结果。此例而言,已经自动执行了3个查询步骤,显示在视窗右侧[查询设定窗格]里面,而当下执行的查询步骤列表也正显示在[套用的步骤]区段里,至于查询步骤的执行结果亦显示在[查询结果窗格]里。
查询的步骤与M语言程式码
基于每一种资料来源的类型、格式、结构与複杂度都有所不同,因此在使用Power Query汇入外部资料进行查询时,便会自动完成先期的资料汇入与转换步骤,而从这些查询步骤的语句、步骤数目,您也可以轻鬆解读资料处理的过程。譬如:以刚刚在Power Query环境下操作汇入外部的csvL档案为例,所建立的查询里会自动完成3个查询步骤。分别是「来源」、「已将标头升阶」以及「已变更类型」,逐一呈现在画面右侧的[查询设定]窗格里,而最后一个步骤的结果也正是此查询的最后输出。当您以滑鼠点选查询步骤时,该查询步骤所对应的原始程式码,也就是M语言程式会立即显示在视窗上方的[资料编辑列](即[公式编辑列])上。想想,这不是很类似在Excel环境里,对工作表顶端的公式编辑列上,输入与编辑公式的相同操作介面吗?
第1个步骤「来源」:
= Csv.Document(File.Contents("F:\2025\PowerQuery文章\NBA球队.csv"),[Delimiter=",", Columns=8, Encoding=950, QuoteStyle=QuoteStyle.None])
即便不会从无到有的撰写,但也应该不难看懂这是取得资料来源的叙述,档案格式是csv格式档案(Csv.Document),而档案内容(File.Contents)是来自路径与档案名称为"F:\2025\PowerQuery文章\NBA球队.csv"的文字档。此文字档是以逗点为分隔符号(Delimiter=",")的资料内容,共计有8个资料栏位(Columns=8),而这份资料档的指定编码类型为950(Encoding=950),这是通常应用于处理繁体中文的Big编码。而且此csv文字档指定不使用任何引号样式,表示其内含文字并不会被引号包围(QuoteStyle=QuoteStyle.None)。
第2个步骤「已将标头升阶」:
= Table.PromoteHeaders(来源, [PromoteAllScalars=true])
Table.PromoteHeaders是Power Query中的内建函数,用来将指定的资料表格其第一列内容提升为标头(意即栏位名称)。由于Power Query的查询步骤是一种有序的过程,因此,目前的步骤其执行时多半会涉猎并参照先前的步骤(常常是延续前一个步骤的执行结果,也有可能是更早以前的步骤),所以在此函数里的第1个参数便是上一个步骤的步骤名称「来源」。至于第2个参数[PromoteAllScalars=true]是一个选项式参数,参数中的Scalars(纯量)指的是单一值类型的数据,这与资料表格或结构化数据(如记录、清单)不同。在此可以表示是否允许将所有的纯量值(单一值)提升为标头。这对于某些特殊情况(如资料表格内含有混合型态的资料)特别有用。简单的说,若使用 [PromoteAllScalars=true]时,处理的过程是将资料来源的第1列变成栏位标题,然后,Power Query会自动推断各栏位适当的资料类型。若是使用 [PromoteAllScalars=false]时,处理过程仍是将资料来源的第1列变成栏位标题,但所有资料栏位的资料仍保持「原始类型」,不会自动转换,这通常表示它们会被视为 "文字类型"。尤其是.csv预设内容就是纯文字档的格式。
第3个步骤「已变更类型」:
= Table.TransformColumnTypes(已将标头升阶,{{"所属联盟", type text}, {"分区", type text}, {"球队名称", type text}, {"主场城市", type text}, {"成立年份", Int64.Type}, {"主场球馆名称 (英文)", type text}, {"容纳人数", Int64.Type}, {"总冠军次数", Int64.Type}})
顾名思义这是针对资料表格里的资料栏位进行资料型态的设定与变更(Table.TransformColumnTypes),延续的是前一个步骤「已将标头升阶」的执行结果,分别将每一个资料栏位设定成适当的资料型态。此时,我们也可以发觉,视窗顶端公式编辑列的面积似乎仅能显示一列程式码,所以,您可以电案右侧的展开按钮,让此公式编辑列的面积向下扩展,可以一次展示较大的编辑区域,让冗长的程式码也可以一览无疑。
编辑完整的M语言程式码:进阶编辑器
在查询编辑器里进行功能选项的操作时,都会自动产生查询步骤的M语言程式码,除了在公式编辑列上可以检视与编辑目前所选取的查询步骤外,也可以开启[进阶编辑器]来检视整个查询里每一个步骤的完整原始程式编码。由于大多数的Power Query查询步骤都是有序的关联,因此,一次检视完整的每一行程式,理解前后文的相依关係,将可以更容易解读查询的过程与意义。若有需要修改查询步骤名称或运算式的编码,也比较不容易出错。而开启[进阶编辑器]的方式是点按[常用]索引标籤后,点按[查询]群组里的[进阶编辑器]命令按钮。
随即开启[进阶编辑器]对话,可以看到此查询的完整M语言程式编码,在此就可以看到每一个查询步骤的名称、程式码,以理解程式码的前后关係与思维逻辑。
前一篇:<<Power Query的学习与M语言实作系列 - (1/5) 使用Power Query汇入外部档案实作-以csv为例>>
下一篇:<<Power Query的学习与M语言实作系列 - (3/5) 最常见的资料整理术– 资料拆分>>