强大的查询:如何将查询与返回的每一行运行一个查询结合起来

时间:2019-07-11 15:33:41

标签: excel powerquery

我是Power Query的新手,并且遇到以下问题:

我有两个单独的API端点,它们是从中提取数据的。两者都通过PowerQuery以JSON格式返回数据,将其格式化为表格,然后输出为表格。

第一个查询会下拉特定类型的所有实体的列表-假设它们是People。对于每条记录,我都有一些元数据和一个ID#。看起来像这样:

{
"Records": 
[ "type" : "Person", "name" : "Joseph Joestar", "parent" : null, "ID" : "JoJo1", "url": "https://person.data/v1/JoJo1"]
}

第二个查询连接到第二个API端点(在第一个查询中列为url),这为我提供了有关特定个人的更多信息。在此查询中,我需要将ID#作为GET的一部分传递,以提取其他信息,该信息返回以下内容:

{ "Person" :
[ "ID" : "JoJo1", 
"name" : "Joseph Joestar", 
"History" : ["history1" : "Born in England", "event2": "Fought Dio the vampire", "event3": "Died en route to America"]
]
}

我想做的是创建一个表,在其中为第一个查询中返回的每个ID#运行第二个查询,然后将每个实体的历史记录显示为自己的行。每个excel行的最终输出可能类似于:

Joseph Joestar-JoJo1-生于英格兰

约瑟夫·乔斯塔(Joseph Joestar)-乔·乔1(JoJo1)-吸血鬼战斗迪奥(

Joseph Joestar-JoJo1-在去美国途中丧生

我不确定如何以这种方式将这些查询组合在一起,或者不确定是否可以在Power Query中使用。是否有人对使用功能或采取的方法有任何建议?乐于做任何必要的自我教学,实际上只需要指出正确的方向。

1 个答案:

答案 0 :(得分:0)

在您没有任何示例代码的情况下,我可以发布一个伪造的伪代码查询版本,其中我使用Sharepoint REST API来获取目录中的文件夹列表,然后获取有关每个文件夹的信息文件夹。

Source = Json.Document(Web.Contents("https://sharepointstuff/Items?$Folders", [Headers=[Accept="application/json;odata=nometadata"]])),
#"Converted to Table" = DidStuffToConvertTheJsonToATable(Source),
#"Added Custom" = Table.AddColumn(#"Converted to Table", "ID_Requests", each 
Json.Document(Web.Contents("https://sharepointstuff/getfolderdata('"& [ID_FROM_THE_TABLE] &"')?$FolderInfo", 
[Headers=[Accept="application/json;odata=nometadata"]]
)))

如果您对自定义列的工作原理有了基本的了解,那么应该很清楚如何为第一个请求返回的每个ID发送一个请求。搜索诸如“ Power Query” +“ Custom Column” +“ Web Request”或“ REST API”之类的术语的组合,或类似的术语,应该会得到有关执行此操作的人员的很多结果。鉴于从不同的API获取这样的数据的细微差别可能千差万别,我还没有看到关于该主题的“通用”教程,但是有很多使用特定API的人的例子。