You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
    ),
    '~'
)

逻辑说明

  1. split(your_source_column, '~'):将分隔文本拆分为代码数组
  2. map(...):遍历数组中每个代码,通过filter从Lookup结果中匹配对应描述
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:00:03