You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse Analytics中如何获取ADLS Gen2文件路径并传入Foreach活动?

解决ADLS Gen2 Parquet文件批量处理并覆盖原位置的方案

方法一:用ADF递归Get Metadata+动态数据集搞定

  • 给Get Metadata活动配置根文件夹路径,勾选递归选项,无需在数据集里加通配符,就能拿到所有子文件夹和文件的列表。
  • 从Get Metadata的输出里筛选出Parquet文件,用这个表达式:@filter(activity('Get Metadata').output.childItems, equals(item().type, 'File') and endswith(item().name, '.parquet'))
  • 把筛选后的文件列表传入Foreach活动,循环时动态拼接文件完整路径:
    • 给源数据集添加FilePath参数,数据集的文件路径直接引用该参数:@dataset().FilePath
    • 每次迭代中,将当前文件的folderPath和name拼接成完整路径:@concat(item().folderPath, '/', item().name),传给源数据集的参数
    • 处理完成后,目标数据集同样使用这个动态路径,开启覆盖写入配置,确保替换原文件

方法二:用脚本获取文件列表+ADF自定义活动

  • 编写PowerShell脚本,调用Azure Storage命令递归扫描ADLS Gen2文件系统,提取所有Parquet文件的路径,示例代码:
    $files = Get-AzDataLakeGen2ChildItem -FileSystemName "你的文件系统名" -Path "根文件夹路径" -Recurse | Where-Object { $_.Name -like "*.parquet" }
    $filePaths = $files | ForEach-Object { $_.Path }
    ConvertTo-Json $filePaths
    
  • 在ADF中添加自定义活动运行该脚本,将输出的路径列表传给后续的Foreach活动,后续步骤同方法一,动态配置源和目标路径,处理后覆盖原文件。

方法三:用ADF数据流批量处理(无需逐个遍历)

  • 如果处理逻辑可通过数据流实现,直接将源数据集指向根文件夹,勾选递归和通配符路径(填写*.parquet),一次性读取所有Parquet文件。
  • 数据流内完成数据处理后,配置目标数据集时选择输出到单一文件夹,开启覆盖选项,同时将文件名选项设为作为列中的数据,在数据流中添加派生列提取源文件路径信息,确保处理后的文件精准覆盖对应原文件。

内容的提问来源于stack exchange,提问作者user19504539

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 21:37:36