求助:如何从文件名拆分下划线生成文件夹名?ADF Set Variable使用失败
ADF按文件名前缀自动归类文件夹的正确实现方案
针对你遇到的文件名错误归类问题,核心是要确保每个文件单独提取前缀、变量作用域正确,以下是具体修复步骤:
1. 正确提取文件名前缀的表达式
在Set Variable活动中,必须针对单个文件提取下划线前的前缀,使用以下表达式:
@split(item().name, '_')[0]
item().name:代表For Each循环中当前遍历的文件名(如ABCD_1234.csv)split(..., '_'):按下划线拆分字符串,得到数组['ABCD', '1234.csv'][0]:取数组第一个元素,即所需的文件夹名ABCD
2. 确保变量在循环内设置
- 不要在For Each循环外提前设置变量,否则所有文件都会复用同一个前缀值
- 必须把Set Variable活动放到For Each循环内部,每个文件处理时重新计算并更新变量
3. 验证变量与路径配置
检查变量值
可以在Set Variable后添加一个Log活动,输出当前文件名和提取的前缀,用于排查:
@concat('当前文件:', item().name, ',目标文件夹:', variables('FolderName'))
复制活动的目标路径设置
在复制活动的目标数据集里,将文件路径设置为:
@concat(variables('FolderName'), '/', item().name)
ADF会自动创建不存在的目标文件夹,无需手动提前创建
4. 处理边缘情况(可选)
如果存在不含下划线的文件名,可添加判断避免报错:
@if(contains(item().name, '_'), split(item().name, '_')[0], replace(item().name, '.csv', ''))
(此处.csv可替换为你实际的文件后缀)
内容的提问来源于stack exchange,提问作者Athiya
相关产品推荐
相关产品推荐

