ADF复制活动如何区分空字符串与Null并正确加载?
解决ADF Copy Activity中空字符串与Null的区分加载问题
步骤1:调整数据集设置
- 关闭数据集的**“空字符串转为Null”**选项,此时Copy Activity会保留原始读取结果:
- 原文件中
||的位置会被读取为空字符串("") - 原文件中
| |的位置会被读取为包含空格的字符串(" ")
- 原文件中
步骤2:添加派生列转换处理字段
在Copy Activity的源转换环节添加派生列,对每个需要区分的字段做逻辑判断:
- 针对原文件中竖线间无内容的部分(需转为SQL的Null):判断字段是否为空字符串,若是则转为Null
- 针对原文件中含空格的部分(需转为SQL的空字符串):将字段的空格替换为空字符串
示例表达式(假设col5对应原文件||位置,col3对应| |位置):
- 处理
col5(转Null):
col5 == "" ? null() : col5
- 处理
col3(转空字符串):
trim(col3) == "" ? "" : col3
如果需要匹配任意数量的空格,用trim()去除前后空格后判断,再转为空字符串即可。
步骤3:执行Copy Activity
完成设置后执行任务,即可实现:
- 原文件中竖线间无内容的部分加载为SQL表的Null
- 原文件中包含空格的部分加载为SQL表的空字符串
内容的提问来源于stack exchange,提问作者Yuvarajan Selvakumar
相关产品推荐
相关产品推荐

