使用POWER查询功能自动从Web服务下载多个XML文件 [英] Automate downloading of multiple xml files from web service with power query

查看:11
本文介绍了使用POWER查询功能自动从Web服务下载多个XML文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要从Web服务API下载多个XML文件。我有一个获取JSON文档的查询: =Json.Document(Web.Contents("http://reports.sem-o.com/api/v1/documents/static-reports?DPuG_ID=BM-086&page_size=100"))

并操作它以获取EXCEL电子表格列中的文件名列表,如:pub_DailyMeterDataD1_201812041627.xml。

我希望得到一个函数来对这个名称列表运行以获取所有数据,所以首先我处理了一个文件:pub_DailyMeterDataD1_201812041627

=Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/PUB_DailyMeterDataD1_201812041627.xml"))

这将获得一个XML表,我对该表进行操作以获得所需的数据(发电机GU_401970的半小时计量兆瓦时

现在,我想将查询更改为一个函数,以便在该服务提供的所有XML文件中自动执行该过程。该函数需要用变量替换文件名。我尝试将此作为函数的准备:

让 Filename="PUB_DailyMeterDataD1_201812041627.xml",

来源=(Web.Contents("https://reports.sem-o.com/documents/Filename")), (后跟操作Mcode)

这不起作用。

然后:

让 Filename="PUB_DailyMeterDataD1_201812041627.xml",

来源=Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/[Filename]")),

我得到了: DataFormat.Error:XML处理失败。输入无效或不受支持。(内部错误:根级别的数据无效。第1行,位置1。) 详细信息: 二进制

被困在这里了。你能帮忙吗。 谢谢 Conor

推荐答案

在Power Query中使用"&;"符号追加字符串。[SOMENAME]是引用表格中的字段的格式,普通变量只是用它的名称来引用。因此,在您的示例中

let Filename="PUB_DailyMeterDataD1_201812041627.xml",

Source = Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/" & Filename)), 

将起作用。

听起来像是您有一个向下钻取到文件名列表的现有查询,但您正在尝试使用它从URL导入它们,因此假设您从中获得文件名的列称为"Filename",那么您可以添加一个自定义列,其中包含以下内容

Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/" & [Filename]))

它会将表加载到每个文件名所在的行上。

这篇关于使用POWER查询功能自动从Web服务下载多个XML文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆