Фабрика данных Azure — операция копирования — ссылка на коллекцию rest api

#rest #azure-data-factory

#rest #azure-data-factory

Вопрос:

Helo eveyone,

Я довольно новичок в фабрике данных, и мне нужно скопировать информацию из Rest API Dynamics Business Central. Я борюсь с объектами типа «Детали», такими как «invoiceSalesHeader».

API для этого объекта заставляет меня указывать идентификатор заголовка в качестве фильтра. В этом смысле мне пришлось бы выполнить цикл x раз (несколько тысяч) и вызвать Rest API для восстановления строк каждого счета-фактуры продажи. Я нахожу это совершенно нелепым и пытаюсь найти другие способы получения информации.

Чтобы избежать этого, я пытаюсь получить информацию, вызвав объект «SalesInvoice» и используя «$ expand= salesInvoiceLines».

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

Возвращаемые данные представляют собой массив счетов-фактур продаж с подмассивом строк счетов-фактур.

Если я выберу «salesInvoiceLines» в качестве ссылки на коллекцию, я получу «$ [‘value’] [0] [‘salesInvoiceLines’]», и это даст мне только строки для первого счета-фактуры (поскольку индекс равен нулю).

Что я должен поместить в ссылку на коллекцию, чтобы получить одну строку для каждой строки salesInvoiceLine

введите описание изображения здесь

Комментарии:

1. В ADF не поддерживается foreach вложенный массив.

2. Вы можете сохранить файл json в Azure Cloud, а затем использовать Azure data flow для его выравнивания.

3. Привет @David Laplante, пожалуйста, поправьте меня, если я неправильно понял вас в ответе.

4. @Дэвид Лапланте, как вы решили эту проблему?

Ответ №1:

Не поддерживается foreach вложенный массив json в ADF.
В качестве альтернативы мы можем использовать плоскую операцию в потоке данных для выравнивания вложенного массива json.

Вот мой пример:
это мой пример данных json, структура похожа на вашу:

 [
 {
 "id": 1,
 "Value": "January",
 "orders":[{"orderid":1,"orderno":"qaz"},{"orderid":2,"orderno":"edc"}]
 },
 {
 "id": 2,
 "Value": "February",
 "orders":[{"orderid":3,"orderno":"wsx"},{"orderid":4,"orderno":"rfv"}]
 },
 {
 "id": 3,
 "Value": "March",
 "orders":[{"orderid":5,"orderno":"rfv"},{"orderid":6,"orderno":"tgb"}]
 },
 {
 "id": 11,
 "Value": "November",
 "orders":[{"orderid":7,"orderno":"yhn"},{"orderid":8,"orderno":"ujm"}]
 }
]
 

В потоке данных мы можем выбрать заголовок вложенного массива json, вот orders :
введите описание изображения здесь

Затем мы видим результат, мы транспонировали массив JSON orders с 2 объектами (orderid, orderno) в 8 строк выравнивания: введите описание изображения здесь