请教ADF V2中新增的Get Metadata Activity的用途
Azure Data Factory V2 Get Metadata Activity 实用场景详解
作为常年和ADF打交道的开发者,我太懂官方文档那种“说清楚了但又没完全说清楚”的感觉了。其实Get Metadata Activity就是ADF里的「情报收集员」——帮你提前获取数据/资源的关键信息,让你的数据流更智能、更健壮。下面是几个最常用的实际场景:
1. 前置校验:避免无意义的任务失败
在ETL/ELT流程启动前,用它做“预检”,能大幅减少因为源数据问题导致的报错:
- 校验文件/表是否存在:比如上游系统每天固定时间推送数据文件,先跑Get Metadata检查目标路径下的文件是否存在,不存在就直接触发告警或者终止流程,不用让后续的复制活动白跑一趟报错。
- 校验数据完整性:检查文件的
size属性,如果是0字节,说明上游生成的文件是空的,直接跳过处理并记录异常;或者检查文件的lastModified时间,确保拿到的是当天最新的文件,不是遗留的旧数据。 - 校验结构合法性:比如读取数据库表的
columnCount或者columnNames,和目标表的结构做对比,不一致就触发结构同步任务,避免后续加载时因为列不匹配失败。
2. 动态驱动流程:告别硬编码
这是Get Metadata最强大的用法之一,让你的流水线能自动适配数据变化:
- 批量处理文件夹内的所有文件:获取文件夹的
childItems属性,拿到所有子文件/子文件夹的列表,然后传给For Each活动,逐个处理每一个文件——不用手动把每个文件名写进流水线,新增文件也不用改流程。 - 动态生成数据映射:获取源表的
columnNames,把这个列表传给复制活动的映射配置,实现自动列映射,哪怕源表新增了列,流水线也能自动适配,不用每次手动更新映射规则。 - 动态选择数据源:比如根据Get Metadata返回的文件扩展名(
extension属性),判断是CSV还是Parquet文件,然后分支到对应的解析逻辑(比如用不同的数据集配置)。
3. 流程分支判断:让流水线更灵活
结合If Condition活动,根据Get Metadata的结果来决定后续走哪条分支:
- 比如检查文件夹内的文件数量(
childItems的长度),如果超过10个就启动并行处理模式,否则用串行模式; - 如果检测到源表的
rowCount为0,就跳过数据清洗步骤,直接生成空报告; - 对比两个文件的
lastModified时间,选择更新时间更近的那个作为源数据。
举个实际的小例子
假设你要做一个每日销售数据批处理流程:
- 先用Get Metadata Activity读取Blob存储里「销售数据」文件夹的
childItems,拿到所有待处理的CSV文件列表; - 把这个列表传入
For Each活动,循环处理每个文件; - 在循环内部,再调用Get Metadata获取当前文件的
size和lastModified属性; - 用
If Condition判断:如果size>0且lastModified是今天的日期,就执行复制活动把文件导入数据仓库;否则把这个文件标记为无效,写入日志表。
内容的提问来源于stack exchange,提问作者Aritra Sarkar
相关产品推荐
相关产品推荐

