在ADF映射数据流中捕获Blob存储中的文件夹名称
提取Azure Blob文件夹名称并加载至SQL表的解决方案
针对你用派生列组件无法获取Blob文件夹名称的问题,以下几种实用方案可以解决:
方案1:从Blob源直接获取文件路径元数据
- 在Azure Data Factory(ADF)的数据流Blob源配置中,找到并勾选包含文件路径(部分版本显示为
Include file path)选项。启用后,源数据集会自动新增FilePath字段,该字段包含完整的Blob文件路径(格式类似your-container/your-folder/sub-folder/filename.csv)。 - 接着在派生列组件中,使用字符串拆分函数提取目标文件夹名称。根据你的路径层级调整表达式:
- 如果文件夹是路径中的第二层(如
container/folder/file.csv),表达式为:FolderName = split(FilePath, '/')[1] - 如果文件在子文件夹下,要取倒数第二层(即文件所在的直接文件夹),表达式为:
FolderName = split(FilePath, '/')[length(split(FilePath, '/'))-2] - 可以通过派生列的预览功能验证结果,调整索引值适配你的实际路径结构。
- 如果文件夹是路径中的第二层(如
方案2:通过管道参数传递固定文件夹名
- 如果是按特定文件夹批量处理文件,可在管道层面定义参数
TargetFolderName,触发管道时传入目标文件夹的名称。 - 在数据流中创建同名参数,将管道参数的值映射到数据流参数。之后在派生列组件中直接引用该参数,比如:
FolderName = @pipeline().parameters.TargetFolderName。此方案适合预先知道处理文件夹的场景。
方案3:获取元数据活动配合数据流传递文件夹信息
- 在管道中添加获取元数据活动,连接到目标Blob存储,配置获取
Child items类型的元数据,筛选出需要处理的文件夹或文件。 - 遍历元数据结果时,从每个文件的
Path属性中解析出文件夹名称,将其存入变量。随后在调用数据流时,将该变量作为参数传递进去,最后在派生列中使用这个参数值填充新增列。
注意事项
- 确保Blob源的路径配置符合预期,若使用通配符路径(如
your-container/*/*.csv),FilePath字段会准确返回每个文件的完整路径。 - 若路径中包含特殊字符,可使用
replace函数先清理后再进行拆分操作,避免解析错误。
内容的提问来源于stack exchange,提问作者user175025
相关产品推荐
相关产品推荐

