Power Query: как объединить запросы с одним запуском запроса для каждой возвращаемой строки - PullRequest
0 голосов
/ 11 июля 2019

Я новичок в Power Query, и у меня возникла следующая проблема:

У меня есть две отдельные конечные точки API, из которых я получаю данные.Оба возвращают данные в JSON через PowerQuery, форматируют их в виде таблицы и выводят в виде листов.

Первый запрос выводит список всех сущностей определенного типа - давайте представим, что они люди.Для каждой записи у меня есть некоторые метаданные и ID #.Это выглядит так:

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

Второй запрос подключается ко второй конечной точке API (указан в первом URL-адресе как 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 может выглядеть примерно так:

Джозеф Джостар - JoJo1 - родился в Англии

Джозеф Джостар - JoJo1 - сражался с Дио Вампиром

Джозеф Джостар - JoJo1- Умер по дороге в Америку.

Я не уверен, каким образом эти запросы можно объединить, или, возможно, это возможно в Power Query.У кого-нибудь есть предложения по использованию функций или подходу?Счастливы заниматься самообучением, которое необходимо, на самом деле просто нужно указать в правильном направлении.

1 Ответ

0 голосов
/ 11 июля 2019

В отсутствие какого-либо примера кода с вашей стороны, я могу опубликовать ложную версию запроса с псевдо-кодированием, в которой я использую REST API Sharepoint, чтобы получить список папок в каталоге, а затем получить информацию о каждой из них. папки.

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"]]
)))

Если вы получили общее представление о том, как работают пользовательские столбцы, должно быть достаточно очевидно, как вы можете отправить запрос для каждого идентификатора, возвращенного из вашего первого запроса. Поиск по комбинации терминов, таких как «Power Query» + «Custom Column» + «Web Request» или «REST API», или что-то подобное, должно получить много результатов о людях, делающих подобные вещи. Учитывая, что нюансы получения таких данных из разных API-интерфейсов могут сильно различаться, я не видел «универсального» учебника по этой теме, но есть много примеров людей, работающих с конкретными API-интерфейсами, которые могут быть применимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...