Azure ADF处理异构JSON文件:是否需统一格式及扁平化方案
Azure ADF异构JSON文件扁平化处理方案
问题背景
需批量处理1700个JSON文件,其中shipment字段存在两种异构结构:
- 部分文件中
shipment为空数组[] - 另一部分文件中
shipment为包含pd-option子数组的对象{}
核心解答
Azure ADF不强制要求输入文件格式完全统一,可通过数据流中的逻辑转换兼容异构结构,实现批量扁平化,具体步骤如下:
1. 统一shipment结构
使用派生列组件,将两种结构的shipment转换为统一的数组格式:
- 输入表达式:
该逻辑会:iif(isArray(shipment), shipment, array(shipment))- 保留空数组
[]不变 - 将
shipment对象包装为单元素数组[{}],确保后续处理的一致性
- 保留空数组
2. 执行多层扁平化
- 先对统一后的
shipment数组使用展开(Flatten)组件,展开数组内的对象 - 若展开后
pd-option字段为数组,再次使用展开组件处理pd-option,实现嵌套数组的扁平化
3. 批量配置
- 在数据集的文件路径中使用通配符(如
*.json)匹配所有1700个目标文件 - 数据流源设置中勾选递归(若文件分布在子文件夹中),ADF会自动遍历批量处理
4. 异常防护(可选)
添加条件拆分组件过滤异常数据:
- 设置判断条件,筛选出
shipment既非数组也非对象的记录 - 将异常数据路由到单独存储,避免单个异常文件中断整个批量任务
内容的提问来源于stack exchange,提问作者Junaid Bilal
相关产品推荐
相关产品推荐

