Как сгладить несколько дочерних узлов с помощью jsonNodeReference в фабрике данных Azure - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть файл json в следующем формате.

{
  "results": [
    {
      "product": {
        "code": "104AB001",
        "names": [
          {
            "lang_code": "fr_CM",
            "name": "BANOLE"
          },
          {
            "lang_code": "f_CM",
            "name": "BANOLE"
          }
        ]
      }
    },
    {
      "product": {
        "code": "104AB002",
        "names": [
          {
            "lang_code": "fr_CM",
            "name": "BANOLE"
          },
          {
            "lang_code": "f_CM",
            "name": "BANOLE"
          }
        ]
      }
    }
  ]
}

Я использую операцию копирования и

"jsonNodeReference": "$.['results'][*].['product'].['names']",
                "jsonPathDefinition": {
                    "product__code": "$.['results'][*].['product'].['code']",
                    "product__names__lang_code": "['lang_code']",
                    "product__names__name": "['name']"
                }

Ожидаемый результат -

product__code   product__names__lang_code   product__names__name
104AB001        fr_CM                       BANOLE
104AB001        f_CM                        BANOLE
104AB002        fr_CM                       BANOLE
104AB002        f_CM                        BANOLE

Но я получаю Выход фабрики данных Azure как Когда я выполнял поиск в переполнении стека и в Google, я получил некоторую информацию, что это невозможно в фабрике данных Azure.ниже приведены ссылки

https://social.msdn.microsoft.com/Forums/en-US/5ebcef1f-5817-434c-9426-a83e9df35965/jsonnodereference-and-jsonpathdefinition-for-multiple-child-nodes?forum=AzureDataFactory

https://medium.com/@gary.strange/flattening-json-in-azure-data-factory-2f2130794258

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

1 Ответ

0 голосов
/ 26 сентября 2019

Только один массив может быть сведен в схеме.Можно ссылаться на несколько массивов - они возвращаются как одна строка, содержащая все элементы в массиве.Однако только один массив может иметь каждый из его элементов, возвращаемых как отдельные строки.Это текущее ограничение для jsonPath.

Однако сначала вы можете преобразовать файл json с вложенными объектами в файл CSV с помощью приложения логики, а затем использовать файл CSV в качестве входных данных для фабрики данных Azure.Ниже приведен URL-адрес, чтобы понять, как приложение логики можно использовать для преобразования вложенных объектов в файле json в CSV.

[ссылка] "https://adatis.co.uk/converting-json-with-nested-arrays-into-csv-in-azure-logic-apps-by-using-array-variable/"

Спасибо

...