Azure Data Factory:将字符串数组/分隔文本的代码映射为描述
Azure Data Factory 批量代码映射方案(无需拆分列)
针对数据表中字符串数组或分隔文本格式的代码,直接映射为对应描述并保留原格式的方案如下:
前置准备
先通过Lookup活动读取完整的Code-Description映射表,确保活动输出包含所有映射行(取消勾选"First row only")。
场景1:处理分隔文本(如 "SG~DB~TP")
直接通过split()+map()+join()组合实现批量映射:
join( map( split(your_source_column, '~'), (code) => first(filter(activity('Lookup_Code_Map').output.value, (item) => item.Code == code)).Description ), '~' )
逻辑说明
split(your_source_column, '~'):将分隔文本拆分为代码数组map(...):遍历数组中每个代码,通过filter从Lookup结果中匹配对应描述join(..., '~'):将映射后的描述数组重新拼接为分隔文本
场景2:处理字符串数组(如 ["SG", "DB", "TP"])
源列本身为数组类型时,直接用map()遍历映射:
map( your_source_array_column, (code) => first(filter(activity('Lookup_Code_Map').output.value, (item) => item.Code == code)).Description )
执行后直接返回格式一致的描述数组。
优化与容错
1. 性能优化(大映射表场景)
当Lookup表数据量较大时,将映射表转为字典可大幅提升匹配效率:
- 先通过Set Variable活动生成字典:
createMap(activity('Lookup_Code_Map').output.value, 'Code', 'Description') - 映射时直接通过键取值:
// 分隔文本场景 join( map( split(your_source_column, '~'), (code) => variables('code_map')[code] ?? code ), '~' ) // 数组场景 map( your_source_array_column, (code) => variables('code_map')[code] ?? code )
2. 容错处理
若存在无匹配的代码,用??空合并运算符返回原代码,避免报错:
coalesce(first(filter(...)).Description, code) // 或使用字典时的 variables('code_map')[code] ?? code
内容的提问来源于stack exchange,提问作者SeekingKnowledge
相关产品推荐
相关产品推荐

