如何在Azure Data Factory中按文件名国家代码统计并校验文件数量
Azure Data Factory 国家维度文件数量校验实现方案
前置说明
你需要校验的文件名格式为Abc_{类型}_{国家代码}_{日期}.csv,要求每个国家代码对应3个不同类型的文件,以下是完整实现逻辑:
实现步骤
1. 拉取目标目录下所有文件名
- 新增
Get Metadata活动,连接到存放csv文件的Blob存储对应容器/目录 - 活动配置的字段列表选择
Child items,运行后会输出当前目录下所有文件的名称数组
2. 提取国家代码并按国家统计文件数
这里提供两种实现方式,可根据你的ADF使用习惯选择:
方式1:Mapping Data Flow实现(推荐,逻辑易维护)
- 新建Mapping Data Flow,源输入选择
Get Metadata活动输出的Child items数组 - 新增派生列活动,用表达式
split(name, '_')[2]提取国家代码,命名新列为country_code - 新增聚合活动,分组字段设置为
country_code,新增聚合字段file_count,表达式为count(name),统计每个国家对应的文件数量 - 聚合结果可输出到ADF变量,或临时存储为JSON/CSV供后续校验使用
方式2:变量+ForEach循环实现(无需数据流,适合轻量场景)
- 预先初始化两个变量:
- 数组类型变量
country_list,用于存储所有出现过的国家代码 - 数组类型变量
count_result,用于存储每个国家对应的文件计数
- 数组类型变量
- 新增
For Each活动,遍历Get Metadata输出的Child items数组- 循环内先通过表达式
@split(item().name, '_')[2]提取当前文件的国家代码 - 判断当前国家代码是否已存在于
country_list中:不存在则追加到country_list并初始化计数为1,存在则将对应国家的计数+1
- 循环内先通过表达式
3. 执行校验逻辑
- 遍历统计得到的国家维度计数结果,判断每个国家的
file_count是否等于3 - 异常分支:如果存在国家计数不等于3(比如示例中的ARG计数为1),可按需触发告警、输出异常日志、中断后续流程
- 正常分支:所有国家计数都等于3时,继续执行后续的数据处理流程
注意:如果后续文件名命名规则有调整,需要对应修改国家代码提取的表达式,确保提取结果准确。
内容的提问来源于stack exchange,提问作者Krishna Murthy
相关产品推荐
相关产品推荐

