Azure Data Factory:创建带tenure参数的归档管道及空文件问题排查
解决方法
1. 生成需归档的年份数组
先通过Set Variable活动创建一个数组变量,用来存储近tenure年的年份字符串(比如tenure=3时生成["2022", "2023", "2024"]):
- 变量类型选择数组
- 变量值使用以下表达式:
range(addYears(utcNow(), -pipeline().parameters.tenure + 1), pipeline().parameters.tenure, 'yyyy')
2. 用ForEach循环遍历每个年份
将ForEach活动的Items属性设置为刚才生成的年份数组变量,循环内依次执行复制文件和删除源文件操作。
3. 修正Copy Data活动的路径参数
源数据集配置
- 根文件夹固定为
Source - 文件名参数设置为
@{item()}/A.csv,确保精准定位到对应年份文件夹下的目标CSV文件,而不是把年份文件夹本身作为复制对象。
目标数据集配置
- 根文件夹固定为
Archive - 文件名参数设置为
@{item()}/A.csv,保证归档后文件结构和源目录一致。
4. 添加Delete Activity清理源文件
在Copy Data执行成功后,用Delete Activity删除Source目录下的对应文件:
- 删除路径设置为
Source/@{item()}/A.csv
问题根源
之前生成空文件是因为参数化时直接将年份字符串作为文件名(如@{item()}),Copy Data活动会把这个路径当成文件去复制,但实际该路径是文件夹,最终生成空文件。
内容的提问来源于stack exchange,提问作者sona
相关产品推荐
相关产品推荐

