ADF数据流:REST返回数字字段映射为指定文本的转换方法咨询
在Azure Data Factory数据流中实现数值到文本的映射转换
场景说明
从REST端点获取的JSON数据格式如下:
{ "Field1":2007, "Field2":2005 }
需要按规则2005 = "AAA"、2007 = "BBB"将数值字段转换为文本,且字段为非必填项(可能不存在),最终输出:
{ "Field1":"BBB", "Field2":"AAA" }
手动实现方案
方案1:使用派生列(Derived Column)转换
这是最直接的手动实现方式,适合映射规则固定且数量少的场景:
- 在数据流中添加派生列转换
- 针对每个可能的字段,编写条件表达式处理:
- 若要覆盖原字段,直接使用原字段名作为派生列名称;若要保留原字段,使用新名称(如
Field1_Mapped) - 示例表达式(以Field1为例):
或更简洁的case( isNull(Field1), null, Field1 == 2007, 'BBB', Field1 == 2005, 'AAA', null )iif嵌套写法:iif(isNull(Field1), null, iif(Field1 == 2007, 'BBB', iif(Field1 == 2005, 'AAA', null)))
- 若要覆盖原字段,直接使用原字段名作为派生列名称;若要保留原字段,使用新名称(如
- 核心逻辑:通过
isNull()判断字段是否存在/为空,避免字段缺失导致报错;匹配到对应数值则返回目标文本,未匹配则返回null(可根据需求调整)
方案2:使用查找(Lookup)转换(适合规则可能扩展的场景)
如果后续映射规则可能增加,可通过小型映射数据集实现:
- 创建一个映射数据集(如JSON/CSV),内容为:
[{"Code":2005,"Text":"AAA"},{"Code":2007,"Text":"BBB"}] - 在数据流中添加查找转换,将数据流中的目标字段(如Field1)与映射数据集的
Code字段关联 - 关联后,用映射数据集的
Text字段替换原数值字段,同时处理字段缺失情况:
其中iif(exists(Field1), lookupOutput.Text, null)lookupOutput.Text为查找转换返回的文本字段
关键注意事项
- 必须用
isNull()或exists()函数判断字段是否存在,避免因字段缺失触发数据流报错 - 若字段存在但数值不在映射规则内,可根据需求返回null、原数值或自定义默认值
内容的提问来源于stack exchange,提问作者Dmitriy Ryabin
相关产品推荐
相关产品推荐

