Azure поток данных фабрики данных от json до SQL - PullRequest
0 голосов
/ 06 августа 2020

У меня есть исходный JSON файл с иерархическими данными, который мне нужно погрузить в две SQL таблицы (реляционные). JSON выглядит следующим образом:

{
"orders":[
  {
    "orderid":"30933",
    "ordername":"abc",
    "items":[
      {
        "itemid":1,
        "itemstatus":"Failed"
      },
      {
        "itemid":2,
        "itemstatus":"Failed"
      }
    ]
  },
  {
    "orderid":"308320",
    "ordername":"xyz",
    "items":[
      {
        "itemid":5,
        "itemstatus":"Succeeded"
      }
    ]
  }
]
}

My SQL, содержащий две таблицы Order и OrderItem с первичным и внешним ключом OrderID.

Теперь у меня есть поток данных фабрики данных Azure с источником, как указано выше JSON, и мне нужно припарковать все данные в соответствующих таблицах.

Итак, здесь мне нужен OrderId (30933,308320), а OrderName (ab c, xyz) будет go в Таблица заказов и данные о соответствующих товарах go в таблицу OrderItem (которая ссылается на OrderId из таблицы заказов). В этом случае в таблице заказов есть 2, а в таблице OrderItem - 3 записи.

1 Ответ

1 голос
/ 07 августа 2020

Мы не можем добиться этого в одной активной копии.

Мы могли использовать два активных копии в одном конвейере, я протестировал, и это удалось. Вы можете выполнить следующие шаги:

  1. Копировать active1: скопировать данные из Orders (порядковый номер и имя заказа) в таблицу Orders.
  2. Копировать active2: скопировать данные из items (itemid и itemstatus) в таблицу OrderItems.

Примечание:

  1. Скопируйте активные 1 и 2, используя тот же файл json, что и исходный. Различия заключаются в настройках сопоставления.

  2. Активное копирование 1 приемника Azure SQL таблица базы данных Orders, активное копирование 2 приемника Azure SQL таблица базы данных OrderItems.

Чтобы вы поняли это ясно, я сделал две картинки в формате GIF.

Настройки сопоставления в Copy active 1: enter image description here

Mapping settings in Copy active 2: enter image description here

Run the pipeline:

enter image description here

Check the data in table:

enter image description here

The limit is that we only could get the first element of items, we can not choose the collection reference both.

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

Обновление:

Поздравляем, вы достигли этого другим способом: сгладьте / транспонируйте данные, используя поток данных, а затем сохраните их для добавления в реляционную таблицу SQL.

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