使用POWER查询功能自动从Web服务下载多个XML文件 [英] Automate downloading of multiple xml files from web service with power query
问题描述
我要从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屋!