如何使用Azure Data Factory将复杂JSON Blob数据转换为关系型数据
ADF 实现指定JSON结构转关系表的可用方案
你可以通过以下几种ADF内置能力实现需求:
- 映射数据流组合转换(最推荐,适配动态市场编码场景)
这是灵活性最高的方案,哪怕后续新增市场编码也不需要改配置,操作步骤如下:- 源组件读取JSON Blob,确保正确解析
reseller嵌套对象结构 - 添加派生列转换,调用
keyValuePairs(reseller)函数将reseller对象转换为键值对数组,每个元素包含key(市场编码,如en-ca)和value(对应市场的转售商数据数组)两个属性 - 第一次添加扁平化转换,展开上一步生成的键值对数组,得到每行对应一个市场,取出
key字段作为后续的Market列 - 第二次添加扁平化转换,展开每行的
value数组,把数组内的MarketPlaceResellerId、ResellerPrice等字段提取为顶层列 - 最后添加选择转换,删除不需要的中间字段,输出目标要求的5个字段即可
- 源组件读取JSON Blob,确保正确解析
- 复制活动自定义架构映射(适合市场编码固定的场景)
如果你提前确定所有市场编码不会新增,可以直接用复制活动实现,不需要启用数据流:
在复制活动的映射界面手动配置每个市场的映射规则,Market列填固定的市场编码值,其他字段分别对应JSON路径reseller.["xx-xx"][0].对应字段名即可。该方案运行成本更低,但无法自动适配新增的市场编码。 - 映射数据流脚本转换(适合熟悉SQL的用户)
你也可以在数据流中加入脚本转换,直接写Spark SQL语句处理嵌套结构,用EXPLODE+LATERAL VIEW语法一次性把reseller对象的键和嵌套数组展开,直接生成目标结构的结果集。
内容的提问来源于stack exchange,提问作者Kamalpreet Kaur
相关产品推荐
相关产品推荐

