Azure Data Factory复制活动:动态映射自定义字段数组索引
解决ADF复制活动中动态JSON路径映射的问题
方案1:改用数据流动(Data Flow)处理动态字段映射
复制活动的TabularTranslator不支持在JSON路径中嵌入动态表达式,改用数据流动可灵活解决这类场景:
- 在数据流动的源节点读取原始JSON数据。
- 添加派生列或选择转换,通过表达式直接按自定义字段的标识(如字段名)取值,无需依赖数组索引。示例表达式:
- 提取Landlord字段:
filter(customFields, customFields.name == 'Landlord')[0].value - 提取Building字段:
filter(customFields, customFields.name == 'Building')[0].value
- 提取Landlord字段:
- 后续直接将处理后的字段映射到目标表即可。
方案2:用Azure Function预处理JSON结构
在复制活动前添加Azure Function活动,将原始JSON中的customFields数组转换为键值对对象,消除对数组索引的依赖:
- 让Azure Function接收原始JSON数据,把
customFields数组转换为类似customFieldsMap的对象,其中键是自定义字段的名称(或唯一标识),值对应字段的value。示例处理逻辑(JavaScript):const processedData = { ...originalData, customFieldsMap: originalData.customFields.reduce((map, item) => { map[item.name] = item.value; // 假设字段有name属性作为唯一标识 return map; }, {}) }; - 复制活动中直接使用静态路径映射,比如
$['customFieldsMap']['Landlord']和$['customFieldsMap']['Building']。
方案3:动态生成完整的Translator配置
通过管道变量拼接生成包含动态索引的Translator JSON,再在复制活动中引用:
- 创建字符串类型的管道变量
dynamicTranslator。 - 使用Set Variable活动,用表达式拼接完整的Translator JSON,将Azure Function输出的索引值嵌入到路径中。示例表达式:
@concat( '{"type": "TabularTranslator",', '"mappings": [', '{"source": {"path": "$[\'id\']"},"sink": {"name": "TicketID"}},', '{"source": {"path": "$[\'summary\']"},"sink": {"name": "TicketSummary"}},', '{"source": {"path": "$[\'status\'][\'name\']"},"sink": {"name": "TicketStatus"}},', '{"source": {"path": "$[\'company\'][\'identifier\']"},"sink": {"name": "CustomerAccountNumber"}},', '{"source": {"path": "$[\'company\'][\'name\']"},"sink": {"name": "CustomerName"}},', '{"source": {"path": "$[\'customFields\'][', string(activity('Get Landlord Field Index').output), '][\'value\']"},"sink": {"name": "Landlord"}},', '{"source": {"path": "$[\'customFields\'][', string(activity('Get Building Field Index').output), '][\'value\']"},"sink": {"name": "Building"}}', '],', '"collectionReference": "",', '"mapComplexValuesToString": false}', '' ) - 在复制活动的Translator设置中,选择“从变量中获取”,并引用
dynamicTranslator变量。
内容的提问来源于stack exchange,提问作者Jonathan Nathanson
相关产品推荐
相关产品推荐

