Сгладьте JSON с помощью дрейфующей схемы на фабрике данных Azure

#json #azure #azure-data-factory-2

#json #azure #azure-data-factory-2

Вопрос:

Есть ли способ сгладить следующий довольно неудобный тип объекта JSON в Azure Data Factory (V2)? Ключи верхнего уровня в данных представляют динамически генерируемые даты, которые различаются в каждом файле. Следовательно, схема дрейфует.

Я хотел бы сгладить данные, развернув members массив под каждым ключом даты. Пожалуйста, смотрите Пример ввода и желаемый результат ниже.

Я не нашел способа добиться этого в потоке картографических данных. Операция сглаживания, похоже, не работает, поскольку схема не может быть определена, и я разворачиваю не один массив, а несколько. Моя вторая попытка состояла в том, чтобы использовать Unpivot для переноса каждой даты в строку, а затем сглаживания, но, похоже, сложный тип не поддерживается для непривитых значений.

Входной образец

 {
  "2021-01-01": {
    "total": 30,
    "members": [
      {
        "name": "foo",
        "value": 10
      },
      {
        "name": "bar",
        "value": 20
      }
    ]
  },
  "2021-01-02": {
    "total": 70,
    "members": [
      {
        "name": "foo",
        "value": 30
      },
      {
        "name": "john",
        "value": 40
      }
    ]
  }
}
 

Желаемый табличный результат

Имя значение
2021-01-01 foo 10
2021-01-01 панель 20
2021-01-02 foo 30
2021-01-02 джон 40

Ответ №1:

Может быть, вы можете попробовать это:

Сгладьте свой массив JSON members 2021-01-01 и 2021-01-02 отдельно. Затем используйте DerivedColumn преобразование, чтобы добавить дату в качестве столбца. Наконец, объедините ваши данные в два потока.

Но для этого вам нужно создать несколько ветвей. Если у вас много данных объекта date, это будет сложно.

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

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

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

1. Это могло бы сработать, если бы ключи всегда 2021-01-01 были и 2021-01-02 . Однако ключи генерируются исходной системой динамически, и как количество ключей, так и их имена различаются в каждом файле. Следовательно, сопоставление потока данных обрабатывает их как дрейфующие столбцы, которые, насколько я понимаю, нельзя развернуть.