Power Query (本文和以后也用 PQ 作为 Power Query 的缩写) 数据处理的起点是获取数据,在我所接触过的数据处理工具中,PQ 能处理的数据源种类算是比较多的,比如基于文件、基于数据库、基于在线服务等等。一般来说,工作中不可能同时接触所有类型的数据,也没有必要对所有数据源全部掌握。我们可以挑一些常用的和典型的数据源去学习,然后举一反三,不知道细节的时候,查看微软的帮助文档。
本篇介绍几个自己常用的文件类型数据源处理。
导入文本文件/CSV 文件
基本上,大体所有的工具都接受文本文件/CSV文件作为数据源,CSV 文件和普通的文本文件区别主要在于分隔符,CSV 默认逗号分隔而已。所以我们在不同的系统间进行数据迁移的时候,没有好的方法,就可以用 CSV 文件作为载体。
PQ 导入 CSV 文件主要就是要注意文件的编码和分隔符,PQ 的界面把这两个要素放在界面的上方,感觉极为贴心。
文本文件/CSV 文件无须多说,给出下面的动图,一看便知。
导入 json 文件
一直以来,Excel 没有直接导入 json 文件的功能,随着 json 文件作为 Restful API 的数据格式,这种格式正在变得越来越重要。忽如一夜春风来,PQ 支持 json 格式的数据,而且还无比强大。下面我用之前经常用到的 emp_master 数据来演示,Excel 格式的文件和 json 文件都已经放在 github 上,方便大家练习。
导入的步骤基本和导入文本文件相同,但因为 json 文件的格式原因,PQ 不能直接上载,而是进入 Power Query Editor 界面
。
因为示例的 json 数据为下面的格式,整个 json 文件只有一个对象,根元素为 rows,rows 包含若干个数组:
{
"rows": [
{
"AGE": 21,
"EDUCATION": "Master",
"EMAIL": "s.uthaman@randatmail.com",
"EMP_ID": 1001,
"GENDER": "Male",
"MARITAL_STAT": "Single",
"NR_OF_CHILDREN": 2,
"PHONE_NR": "294-0453-82",
"uri": "http://localhost:5000/employees/"
},
...
]
}
对应到 PQ,导入的数据类型为 record (rows 为名称),record 包含若干条信息,导入后 PQ 数据显示区如下 :
后续还需要三个个步骤:
- 对 List 进行深化(“深化”对应的英语里词汇是 Drill-down,中文翻译很难懂,可能翻译为下钻要强些),通过深化操作,将 List 展开为行,每一行都是一个 record 类型数据
- 将所有行 record 类型转换成 table,方便后面展开
- 对 table 进行展开操作
导入 xml 文件
Excel 本身已经有很强的 xml 文件处理能力,PQ 自然也不在话下。我从微软的网站找了一个 xml 示例数据,大家可以把这个数据放在扩展名为 xml 的文件中。然后参照下面的动图进行练习。