Azure Synapse Analytics数据流活动中如何获取接收器写入输出文件的Blob URL
实现方法(基于Azure Data Factory 场景)
方案1:提前预定义文件名拼接URL(最简单)
适合可以提前确定输出文件名的场景:
- 在数据流的Sink配置页,关闭「允许分片」开关,强制数据流只输出单个文件
- 把输出文件名设置为固定值,或者用管道参数/全局参数提前拼接好动态名称(比如按生成时间戳命名的话,直接在管道层面先算好时间戳存在变量里,再传给数据流作为Sink文件名参数)
- 数据流执行完成后,直接用管道的表达式拼接完整Blob URL,格式为
https://<存储账户名>.blob.core.windows.net/<容器名>/<自定义的文件路径/文件名> - 把拼接好的URL配置为管道的输出参数即可
方案2:动态查询输出文件生成URL(容错率更高)
适合文件名由数据流内部生成、无法提前预知的场景:
- 配置数据流Sink输出到Blob存储的一个专属空文件夹下,保证该文件夹内只会存在你刚生成的这一个CSV文件
- 在管道的数据流活动之后,新增一个Get Metadata活动,关联Blob存储对应的链接服务,路径指定为上述的输出文件夹,勾选返回「子项列表」字段
- 新增Set Variable活动,用表达式提取输出的文件名:
@activity('Get Metadata').output.childItems[0].name - 拼接存储域名、容器路径、文件名得到完整Blob URL,设置为管道输出即可
注意:如果你的Blob存储没有开启公共匿名访问,需要在拼接URL时额外追加有权限的SAS Token,才能保证拿到URL的主体可以正常访问文件。
内容的提问来源于stack exchange,提问作者kowsalyav
相关产品推荐
相关产品推荐

