正在尝试在Azure数据工厂中平面化JSON

lyr7nygr  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(130)

我有一个JSON文件,格式如下:
第一个月
在这个文件中,我有5000个用户,每个用户大约有150个配置文件字段,“animating_field_name...”对于每个用户和字段名称组合都是完全唯一的。我想解析和展开这个文件,这样我的结果看起来像这样:

我还不知道如何在ADF中的解析或展平和展开函数中使用通配符或动态表达式。
有人能就此提供进一步的建议吗?
我尝试在ADF中同时使用parse和flatten函数,我尝试在这些函数中使用动态表达式,但无法成功运行。我遵循了这个问题how to flatten multiple child nodes using jsonNodeReference in azure data factory和指南:https://adatis.co.uk/converting-json-with-nested-arrays-into-csv-in-azure-logic-apps-by-using-array-variable/,但更改对象名称“annering_field_name...”证明是有限制的。

dly7yett

dly7yett1#

在Map数据流时,很难实现将键名称不同的嵌套JSON扁平化,因为在数据流中,任何转换都是在定义的源模式上进行的。
您可以使用C#、JAVA编写自定义代码并在ADF中使用自定义活动,也可以将JSON更改为如下定义的格式并直接在其上应用扁平化转换:

{
"first_name":"Jane",
"last_name":"Doe",
"userid":12345,
"profile":{
   "annoying_field_name":[
      {
         "field_id":15,
         "field_name":"Gender",
         "value":"Female",
         "applicable":1
      },
      {
         "field_id":16,
         "field_name":"Interests",
         "value":"Baking",
         "applicable":1
      }
   ]
}
}
k5ifujac

k5ifujac2#

我同意**@AnnuKumari-MSFT**,因为在ADF中我们只能扁平化对象JSON数组。
我已经尝试重现这个,但你的JSON包括不同的键,所以转换成像上面这样的对象数组。
然后,除了在数据流中进行扁平化转换之外,还可以尝试复制活动来扁平化。
给予源和接收器JSON并转到Map

给列给予各自的名称。你可以像上面一样删除不需要的列。

预期结果:

相关问题