我想从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的半小时计量MWh
现在,我想将查询更改为一个函数,以跨服务提供的所有xml文件自动执行该过程。该函数需要用变量代替文件名。我尝试此操作作为功能的准备:
让 Filename =“ PUB_DailyMeterDataD1_201812041627.xml”,
Source =(Web.Contents(“ https://reports.sem-o.com/documents/Filename”))), (随后是操纵Mcode)
这不起作用。
然后这个:
让 Filename =“ PUB_DailyMeterDataD1_201812041627.xml”,
Source = Xml.Tables(Web.Contents(“ https://reports.sem-o.com/documents/[Filename]”)),
我得到: DataFormat.Error:Xml处理失败。输入无效或不受支持。 (内部错误:根级别的数据无效。第1行,位置1。) 细节: 二进制
所以被困在这里。你能帮我吗。 谢谢 康纳尔
答案 0 :(得分:0)
您可以在Power Query中附加带有“&”符号的字符串。 [Somename]是引用表中字段的格式,仅使用其名称引用普通变量。所以在您的示例中
let Filename="PUB_DailyMeterDataD1_201812041627.xml",
Source = Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/" & Filename)),
会工作的。
听起来您有一个现有查询,它会向下钻取文件名列表,但是您尝试使用该查询从url导入文件名,因此假设您从中获取文件名的列称为“文件名”那么您可以在其中添加一个自定义列
Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/" & [Filename]))
它将把表加载到每个文件名的行上。