PowerQuery 从工作薄文件中获取数据时会自动生成四个步骤,点击【转换数据】后自动生成。
尽管全是自动生成,只需要鼠标操作即可,但若了解这其中发生了什么,才更有利于以后更加方便的去处理其他复杂场景下的需求。
-
搞清楚这四步都做了什么
-
可点击【高级编辑器】查看这四步查询的详细内容。此处的
Let .. in
结构,知道了解即可!
- 步骤解析:
1. 源 Source: Excel.Workbook([binary], null,true)
,
- 第一参数
Binary:File.Content(文件路径)
; - 第二参数表示是否使用标题,类型为布尔值。
true
表示使用第一行作为标题,不填、null
、false
都表示不使用。若将第二参数调整为true
,应删除第三步骤【提升的标题】 - 第三参数表示为延迟类型,同样为布尔值,据说在合并文件夹时填
true
,运行效率更高。实际使用中没有明显区别,在应对大量文件需要合并时加上即可,加上也不费时间,不加也不影响什么。
2. 导航 Sheet3_Sheet: 选择的某个工作表,并返回获取工作表的数据;标题在第一行,所以第三步骤将第一行提升为标题
- 此处使用:
源{[Item="Sheet3",Kind="Sheet"]}
来筛选行(即筛选工作表),然后接[Data]
获取工作表数据。
- 1. 扩展阅读: 三大容器:
list、record、table
。此处通过{[Item=“Sheet3”]}来确定取哪个工作表的数据。了解即可,一般此步骤都是自动生成,需要手工写出来的场景较少。 - 2. 扩展阅读: 将第一步骤
Excel.Workbook([binary], null,true)
的第二参数修改为true
,效果如下:自动将第一行作为标题。
3. 提升的标题: 将数据的第一行往上提升为标题(字段)。前面的第二参数改为true
后可删除此步骤,不然标题就消失了
4. 更改的类型: PQ 自动识别数据类型,并将其修改,PQ 的数据类型自动识别通常只参考了前 200 行。
- 这一步只能作为辅助,多数标题类操作都会导致自动生成此步骤。
- 此处公式:
Table.TransformColumnTypes
,类似的有:Table.TransformColumns
、Table.TransformRows
较为常用。