Как сохранить выходные данные API в наборе данных на фабрике данных Azure

#api #rest #post #dataset #azure-data-factory

#API #rest #Публикация #набор данных #azure-data-factory

Вопрос:

В настоящее время я работаю над проектом на фабрике данных Azure, который включает сбор данных из набора данных, использование этих данных для выполнения вызовов API, а затем получение выходных данных вызовов и их размещение в другом наборе данных. Таким образом, я хочу получить набор данных, содержащий различные данные, которые возвращает мне вызов API. Моя текущая трудность в этом заключается в том, что я не знаю, как заставить «веб-активность» (которую я использую для выполнения вызова API) сохранять свои выходные данные в моем наборе данных. Я перепробовал множество различных решений, найденных в Интернете, однако ни одно из них, похоже, не работает. Я не уверен, устарела ли официальная документация или я неправильно понимаю ее части. Ниже я перечислил ссылки на решения, которые я пробовал и потерпел неудачу:

  1. Копирование данных из источника REST
  2. Копирование данных из источника HTTP
  3. (среди прочих, включая похожие сообщения на мои.)

Текущий поток в моем конвейере заключается в том, что «Поиск» собирает список переменных с именем «User_ID». Эти идентификаторы пользователей вводятся в цикл ForEach, который вызывает API с помощью действия «Web», используя каждый из идентификаторов ПОЛЬЗОВАТЕЛЯ. И именно здесь в конвейере я хочу реализовать то или иное действие, которое может публиковать каждый из этих выходных данных веб-активности в моем новом наборе данных.

Я пытался использовать действие «Копировать данные», но все, что оно, похоже, делает, это копирует данные прямо из одного набора данных в другой и не может манипулировать данными (что я хочу сделать с помощью моего вызова api).

У кого-нибудь есть решение, как это сделать? Заранее большое спасибо.

Ответ №1:

Не уверен, почему вы не смогли добиться этого после копирования данных из конечной точки REST. Я протестировал приведенное ниже, которое работает нормально. Я использовал функцию сопоставления схемы действия «Копировать данные».

Например, я использовал образец API http://dummy.restapiexample.com/api/v1/employees в качестве источника и для моего тестирования я использовал CosmosDB в качестве приемника. Конечно, вы можете выбрать любой другой набор данных в соответствии с вашими требованиями.

  1. Создайте «связанную службу» для REST API. Для простоты у меня нет аутентификации для этого API. Конечно, у вас есть такая опция, если требуется. введите описание изображения здесь
  2. Создайте «связанную службу» для целевого хранилища данных. В моем случае это CosmosDB. введите описание изображения здесь
  3. Создайте набор данных для REST API и создайте ссылку на связанную службу, созданную в # 1. введите описание изображения здесь
  4. Создайте Dataset для хранилища данных (в моем случае CosmosDB) и создайте ссылку на связанную службу, созданную в # 2. введите описание изображения здесь
  5. В конвейере добавьте действие «Копировать данные», как показано ниже, с источником в качестве набора данных REST, созданного в # 3, и приемником в качестве набора данных, созданного в # 4. Кроме того, в моем случае мне пришлось добавить сопоставление схемы, чтобы выбрать массив employees из выходных данных API и сопоставить с каждым полем в моем хранилище данных. введите описание изображения здесь
    введите описание изображения здесь
    введите описание изображения здесь
  6. И вуаля, все. Когда я запускаю конвейер, он вызывает REST API и сохраняет выходные данные в моей БД с моим желаемым отображением. введите описание изображения здесь