如何在Azure Data Factory中实现列名与数据类型验证?
Azure Data Factory 管道验证机制实现方案
一、必填列头缺失校验
- 使用
Lookup活动读取目标Excel文件的第一行列头:勾选第一行作为表头和First row only选项,获取文件的列头集合。 - 创建数组类型变量
requiredColumns,通过Set Variable活动赋值为必填列名数组,例如["A", "B", "E"]。 - 用
Filter Array活动筛选缺失的必填列:输入数组选择requiredColumns,过滤条件设为@not(contains(activity('Lookup列头').output.firstRow, item())),输出结果即为所有缺失的必填列。 - 添加
If Condition活动判断结果:若过滤后的数组长度大于0(@greater(length(activity('Filter Array').output), 0)),触发Fail活动返回错误提示,示例消息:@concat('缺失必填列:', join(activity('Filter Array').output, ', '))。
二、数据映射流逐行数据类型校验
- 在数据映射流中配置源数据集,选择目标Excel文件,确认列类型推断设置正确。
- 添加派生列转换,为需校验的列生成类型校验标记:
- 数值型列A:派生列
A_TypeCheck,表达式为@isNumber(A),返回布尔值标识类型是否合法。 - 日期时间型列B:派生列
B_TypeCheck,表达式为@isDateTime(B),返回布尔值标识类型是否合法。
- 数值型列A:派生列
- 添加Filter转换,筛选类型校验失败的行:过滤条件设为
@or(not(A_TypeCheck), not(B_TypeCheck)),仅保留校验不通过的行。 - 处理失败行:
- 若需返回错误提示:将失败行写入Blob存储的错误日志文件,在管道中用
Lookup活动读取日志行数,再通过Fail活动返回提示,示例:@concat('数据类型校验失败行数:', string(activity('Lookup错误日志').output.count), ',详情请查看错误日志')。 - 若需留存错误数据:将失败行与成功行分别输出至不同数据集,实现数据分流存储。
- 若需返回错误提示:将失败行写入Blob存储的错误日志文件,在管道中用
内容的提问来源于stack exchange,提问作者Candice
相关产品推荐
相关产品推荐

