如何在Azure Data Factory中使用jsonNodeReference展平多个子节点

时间:2019-09-25 03:47:46

标签: azure azure-sql-database azure-data-factory azure-data-factory-2 azure-databricks

我有一个具有以下格式的json文件。

(n^2)

我正在使用复制活动,并且

{
  "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']"
                }

但是我越来越 Azure data factory output as 当我确实在堆栈溢出和Google中进行搜索时,我得到了一些信息,例如在Azure Data Factory中是不可能的。下面是链接

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 :(得分:0)

在一个模式中只能将一个数组展平。可以引用多个数组-返回为包含该数组中所有元素的一行。但是,只有一个数组可以将其每个元素作为单独的行返回。这是jsonPath的当前限制。

但是,您可以先使用Logic App将带有嵌套对象的json文件转换为CSV文件,然后再将CSV文件用作Azure数据工厂的输入。请参阅下面的URL,以了解如何使用Logic App将json文件中的嵌套对象转换为CSV。

[link]“ https://adatis.co.uk/converting-json-with-nested-arrays-into-csv-in-azure-logic-apps-by-using-array-variable/

谢谢