#api #rest #post #dataset #azure-data-factory
#API #rest #Публикация #набор данных #azure-data-factory
Вопрос:
В настоящее время я работаю над проектом на фабрике данных Azure, который включает сбор данных из набора данных, использование этих данных для выполнения вызовов API, а затем получение выходных данных вызовов и их размещение в другом наборе данных. Таким образом, я хочу получить набор данных, содержащий различные данные, которые возвращает мне вызов API. Моя текущая трудность в этом заключается в том, что я не знаю, как заставить «веб-активность» (которую я использую для выполнения вызова API) сохранять свои выходные данные в моем наборе данных. Я перепробовал множество различных решений, найденных в Интернете, однако ни одно из них, похоже, не работает. Я не уверен, устарела ли официальная документация или я неправильно понимаю ее части. Ниже я перечислил ссылки на решения, которые я пробовал и потерпел неудачу:
- Копирование данных из источника REST
- Копирование данных из источника HTTP
- (среди прочих, включая похожие сообщения на мои.)
Текущий поток в моем конвейере заключается в том, что «Поиск» собирает список переменных с именем «User_ID». Эти идентификаторы пользователей вводятся в цикл ForEach, который вызывает API с помощью действия «Web», используя каждый из идентификаторов ПОЛЬЗОВАТЕЛЯ. И именно здесь в конвейере я хочу реализовать то или иное действие, которое может публиковать каждый из этих выходных данных веб-активности в моем новом наборе данных.
Я пытался использовать действие «Копировать данные», но все, что оно, похоже, делает, это копирует данные прямо из одного набора данных в другой и не может манипулировать данными (что я хочу сделать с помощью моего вызова api).
У кого-нибудь есть решение, как это сделать? Заранее большое спасибо.
Ответ №1:
Не уверен, почему вы не смогли добиться этого после копирования данных из конечной точки REST. Я протестировал приведенное ниже, которое работает нормально. Я использовал функцию сопоставления схемы действия «Копировать данные».
Например, я использовал образец API http://dummy.restapiexample.com/api/v1/employees в качестве источника и для моего тестирования я использовал CosmosDB в качестве приемника. Конечно, вы можете выбрать любой другой набор данных в соответствии с вашими требованиями.
- Создайте «связанную службу» для REST API. Для простоты у меня нет аутентификации для этого API. Конечно, у вас есть такая опция, если требуется.
- Создайте «связанную службу» для целевого хранилища данных. В моем случае это CosmosDB.
- Создайте набор данных для REST API и создайте ссылку на связанную службу, созданную в # 1.
- Создайте Dataset для хранилища данных (в моем случае CosmosDB) и создайте ссылку на связанную службу, созданную в # 2.
- В конвейере добавьте действие «Копировать данные», как показано ниже, с источником в качестве набора данных REST, созданного в # 3, и приемником в качестве набора данных, созданного в # 4. Кроме того, в моем случае мне пришлось добавить сопоставление схемы, чтобы выбрать массив employees из выходных данных API и сопоставить с каждым полем в моем хранилище данных.
- И вуаля, все. Когда я запускаю конвейер, он вызывает REST API и сохраняет выходные данные в моей БД с моим желаемым отображением.