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

如何用Synapse Pipelines复制Git仓库中带日期命名的多份CSV文件至Azure存储

Synapse Pipelines批量同步Git仓库带日期的CSV到Azure存储

核心思路

用Synapse的ForEach活动遍历目标日期范围,逐个复制对应日期的CSV文件到Azure存储,或者先获取仓库内的文件列表再筛选处理。

具体实现步骤

1. 生成待处理的日期集合

根据你的需求选以下两种方式之一:

  • 历史数据批量同步:如果要同步某段时间的所有文件,用表达式生成日期数组。比如生成过去90天的日期,可在Set Variable活动里设置变量值为:
    @createArray(
        formatDateTime(addDays(utcNow(), -90), 'dd-MM-yyyy'),
        formatDateTime(addDays(utcNow(), -89), 'dd-MM-yyyy'),
        ...
    )
    
    要是日期范围大,更高效的方式是用Lookup活动从Azure SQL的日期维度表读取日期列表,或者用Script活动生成日期集合。
  • 动态获取仓库现有文件:调用GitHub的内容API(公开仓库无需认证),用Web活动请求GET /repos/{你的用户名}/{仓库名}/contents/{文件所在目录},拿到所有文件名后,用Filter活动筛选出符合DA-\d{2}-\d{2}-\d{4}格式的文件名,再提取日期部分作为遍历集合。

2. 配置ForEach循环

  • 将ForEach的Items参数绑定到第一步生成的日期数组(或筛选后的文件名集合)。
  • 如果仓库有访问频率限制,建议开启Sequential顺序执行;无限制的话保持默认并行执行即可。

3. 循环内的文件复制操作

在ForEach内部添加Copy Data活动,分别配置源和目标:

源端(Git公开文件)

  • 源类型选HTTP,URL用表达式拼接:
    @concat('https://raw.githubusercontent.com/{你的用户名}/{仓库名}/{分支名}/DA-', item(), '.csv')
    
    替换占位符为实际信息,分支默认是main。
  • 认证方式选Anonymous,格式设为DelimitedText,配置CSV的分隔符、是否含表头等参数。

目标端(Azure存储)

  • 目标类型选Azure Blob Storage或ADLS Gen2,配置好存储账户连接。
  • 文件路径设为你要保存的容器/文件夹,文件名用表达式保持原命名:
    @concat('DA-', item(), '.csv')
    

4. 异常处理

  • 如果担心某日期的文件不存在导致管道失败,可在Copy Data前加If Condition活动:先用Web活动发送HEAD请求到文件URL,判断返回状态码是否为200,只有存在时才执行复制。
  • 若只需每日同步当天文件,不用循环,直接用formatDateTime(utcNow(), 'dd-MM-yyyy')生成当日日期,拼接URL后执行一次Copy Data,再把管道设为每日触发即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:35:13