更改数据表结构_使用Power Query自定义函数读取并处理具有相同结构的多个文件...
我们可以通过修改Power Query中的已有查询,创建包含复杂结构的函数,自动完成特定的重复性工作,提高工作效率。数据文件下载地址:http://data.stats.gov.cn/easyquery.htm?cn=E0105基本思路是把对单个文件的操作步骤抽象为一般化的步骤。导入分析数据文件首先用Power Query导入需要定期处理的一个文件并根据需要整理数据。导入数据。根据需要修改整理数据
我们可以通过修改Power Query中的已有查询,创建包含复杂结构的函数,自动完成特定的重复性工作,提高工作效率。
数据文件下载地址:
http://data.stats.gov.cn/easyquery.htm?cn=E0105
基本思路是把对单个文件的操作步骤抽象为一般化的步骤。
导入分析数据文件
首先用Power Query导入需要定期处理的一个文件并根据需要整理数据。
导入数据。
根据需要修改整理数据。此处的步骤为每次导入新数据时都要重复的操作。
整理完毕后打开“高级编辑器”分析代码,选择可以作为参数的变量,创建自定义函数。
在高级编辑器中查看分析代码
从代码中可以发现与导入文件相关的操作位于let语句的第一行代码中。与文件存储位置相关的路径和文件名信息使用了硬编码,所以在创建自定义函数时需要使用参数替代这部分数据("D:文件列表北京.xls")。
源 = Excel.Workbook(File.Contents("D:文件列表北京.xls"), null, true),
创建函数
在高级编辑器中修改代码,创建自定义函数。
let 读取文件 = (路径名 as text, 文件名 as text) => let 源 = Excel.Workbook(File.Contents("D:文件列表北京.xls"), null, true), 主要城市年度数据1 = 源{[Name="主要城市年度数据"]}[Data], 删除的底部行 = Table.RemoveLastN(主要城市年度数据1,1), 删除的顶端行 = Table.Skip(删除的底部行,3), 提升的标题 = Table.PromoteHeaders(删除的顶端行), 更改的类型 = Table.TransformColumnTypes(提升的标题,{{"2019年", type number}, {"2018年", type number}, {"2017年", type number}, {"2016年", type number}, {"2015年", type number}, {"2014年", type number}, {"2013年", type number}, {"2012年", type number}, {"2011年", type number}, {"2010年", type number}}) in 更改的类型in 读取文件
参数列表中as操作符的作用是限定参数类型。修改函数查询名称,最终结果如下图。
修改函数内容及名称。
调用函数
使用Power Query导入存储所有待操作文件的文件夹。本例中文件夹里含有4个Excel文件。导入后注意观察列数据,Name和Folder Path两列包含了调用前面创建的自定义函数所需的参数。
导入存储待操作文件的文件夹。
含有函数调用参数的Name和Folder Path列。
点击“添加自定义列”,在自定义公式中输入自定义函数和所需参数。
利用函数添加自定义列。
点击新列标题右侧的扩展按钮,提取数据。
根据需要选择数据列,选择“扩展”,完成数据的导入。
调整数据,得到最终结果。
最后把查询结果上载到数据表即可。
当有新的数据文件时,只要存入相应的文件夹,在Power Query中刷新数据更新即可。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)