如何在ADF Power Query中基于Azure Blob新文件名传递动态参数?
解决方案:基于Azure Blob新生成文件名向Power Query传递动态参数
步骤1:创建动态参数
- 打开Power Query编辑器,点击「主页」选项卡 →「管理参数」→「新建参数」,命名为
TargetBlobFileName,类型选择「文本」,可设置一个示例文件名作为默认值。
步骤2:连接Blob存储并筛选目标文件
- 连接到你的Azure Blob存储账户,定位到指定的目标文件夹。
- 在文件夹内容的查询界面中,找到
Name列,添加筛选规则:选择「等于」,然后关联刚才创建的TargetBlobFileName参数。 - 若要精准筛选当日新增文件,可结合
Date modified列,用Date.From([Date modified]) = Date.From(DateTime.LocalNow())作为筛选条件,提取日期部分匹配当日。
步骤3:动态加载匹配的CSV数据
- 筛选出目标文件后,点击
Content列的展开按钮,选择「CSV」格式加载数据,后续直接衔接你已完成的数据清洗流程即可。
进阶:批量处理当日所有5个新增文件
如果需要一次性处理当日全部5个文件,无需单个参数,直接按日期筛选后批量加载:
- 在文件夹内容查询中添加自定义列,公式为
Date.From([Date modified]) = Date.From(DateTime.LocalNow()),标记是否为当日文件。 - 筛选该自定义列为
true的行,然后批量展开Content列的CSV数据,合并为统一数据集。
核心Power Query M代码片段
筛选当日文件并批量加载
let Source = AzureStorage.BlobContents("你的存储账户URL", "容器名/目标文件夹路径"), #"筛选当日文件" = Table.SelectRows(Source, each Date.From([Date modified]) = Date.From(DateTime.LocalNow())), #"添加CSV数据列" = Table.AddColumn(#"筛选当日文件", "CSV数据", each Csv.Document([Content])), #"展开CSV数据" = Table.ExpandTableColumn(#"添加CSV数据列", "CSV数据", Table.ColumnNames(#"添加CSV数据列"{0}[CSV数据])) in #"展开CSV数据"
使用参数匹配单个文件名
let Source = AzureStorage.BlobContents("你的存储账户URL", "容器名/目标文件夹路径"), #"筛选目标文件" = Table.SelectRows(Source, each [Name] = TargetBlobFileName), #"加载CSV数据" = Csv.Document(#"筛选目标文件"{0}[Content]) in #"加载CSV数据"
注意事项
- 确保Power Query已配置Blob存储的访问权限(账户密钥或SAS令牌均可)。
- 若文件名有固定命名规则(如带日期前缀),可调整筛选条件为
Text.StartsWith([Name], "前缀-" & Date.ToText(Date.From(DateTime.LocalNow()), "yyyyMMdd")),实现更精准的匹配。
内容的提问来源于stack exchange,提问作者Codernator
相关产品推荐
相关产品推荐

