Azure Synapse工作区与GitHub反向同步及自动触发运行需求咨询
GitHub到Azure Synapse反向同步+自动执行实现方案
一、先搞懂Synapse Git集成的文件逻辑
你之前看到的JSON格式是Synapse的标准存储结构:
- SQL脚本:实际是
.sql文件+配套的JSON元数据(记录脚本关联的SQL池、存放路径等信息) - Notebook:本质是Jupyter的
.ipynb文件(本身就是JSON结构),同样带元数据文件关联Spark池
直接提交纯SQL/Python代码到Git是不行的,得符合Synapse的存储格式——要么从Synapse Studio导出模板修改,要么手动编写元数据。
二、实现GitHub到Synapse Studio的自动同步
确认Git分支配置
- 把GitHub的目标分支设为Synapse的「协作分支」:往这个分支提交符合格式的文件后,Synapse Studio会自动拉取变更,开发中心里直接就能看到最新的脚本和Notebook。
- 如果用「发布分支」,默认需要手动触发发布到工作区,但也能通过GitHub Actions改成自动发布。
提交符合格式的文件到GitHub
- SQL脚本示例:
新建一个.sql文件写你的SQL逻辑,再配一个同名的.json元数据文件:{ "content": { "query": "SELECT * FROM your_target_table", "metadata": { "name": "MyQueryScript", "folder": "/Production/SQLScripts", "poolName": "MyDedicatedSQLPool" } } } - Notebook:直接用本地Jupyter写好导出
.ipynb文件,或者从Synapse Studio导出一个现有Notebook当模板修改,确保元数据里指定了对应的Spark池。
- SQL脚本示例:
三、自动触发计算池运行+查看结果
这步要靠GitHub Actions来实现自动触发:
- 编写GitHub Actions工作流
在仓库里新建.github/workflows/synapse-auto-run.yml,当代码推送到指定分支时,自动调用Azure CLI执行脚本和Notebook:jobs: synapse-job-runner: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # 登录Azure,需提前在GitHub Secrets中存入AZURE_CREDENTIALS - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} # 执行SQL脚本 - name: Run SQL Script run: | az synapse sql script execute \ --workspace-name your-synapse-workspace-name \ --name MyQueryScript \ --sql-pool-name MyDedicatedSQLPool # 执行Notebook - name: Run Spark Notebook run: | az synapse notebook start \ --workspace-name your-synapse-workspace-name \ --name MyPythonNotebook \ --spark-pool-name MySparkPool - 查看运行结果
- 执行后直接去Synapse Studio的「监视器」板块看作业状态和输出;也能在GitHub Actions的日志里看执行细节;要是想自动展示结果,可以把输出写到Synapse的湖数据库或Blob存储,再用Synapse仪表板做可视化。
四、关键注意事项
- GitHub用的服务主体得有Synapse工作区的「Synapse Contributor」权限,不然没法执行作业。
- Git里的文件路径要和Synapse Studio里的文件夹结构对应,不然同步会出问题。
- Notebook里的Python依赖要提前在Spark池里配置好,不然运行时会报找不到包的错误。
内容的提问来源于stack exchange,提问作者Syed Imran
相关产品推荐
相关产品推荐

