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

如何用Azure Python SDK for DataFactory连接指定Git分支并更新数据集?

连接Git分支操作Azure Data Factory数据集

默认的adf_client.datasets.get()方法获取的是已发布到live环境的数据集,而非Git分支中的草稿版本。要操作Git分支里的资源,需要利用Data Factory的Git集成能力,通过以下方式实现:

方法一:通过Git访问令牌直接操作仓库文件

先获取Git仓库的访问令牌,再用Git客户端库直接读写分支内的数据集配置文件:

1. 获取Git访问令牌

from azure.identity import ClientSecretCredential
from azure.mgmt.datafactory import DataFactoryManagementClient
from azure.mgmt.datafactory.models import GitAccessTokenParameters

subscription_id = 'xxxxx'
resource_group_name = 'xxxxxx'
factory_name = 'adf-xxx'
target_branch = 'your-target-branch'  # 替换为你的Git分支名
git_type = 'GitHub'  # 若使用Azure DevOps则改为'AzureDevOpsGit'

credentials = ClientSecretCredential(
    tenant_id='xxxx',
    client_id='xxxx',
    client_secret='xxxx'
)

adf_client = DataFactoryManagementClient(credentials, subscription_id)

# 获取Git仓库访问令牌
git_token_result = adf_client.factories.get_git_access_token(
    resource_group_name=resource_group_name,
    factory_name=factory_name,
    git_access_token_parameters=GitAccessTokenParameters(
        repository_type=git_type,
        branch_name=target_branch
    )
)

access_token = git_token_result.access_token
repo_url = git_token_result.repository_url

2. 读写并提交分支中的数据集

使用gitpython库操作Git仓库(需先安装:pip install gitpython):

import git
import json
from tempfile import TemporaryDirectory

# 创建临时目录克隆仓库
with TemporaryDirectory() as tmpdir:
    # 替换URL为带令牌的格式,避免认证问题
    auth_repo_url = repo_url.replace('https://', f'https://oauth2:{access_token}@')
    repo = git.Repo.clone_from(auth_repo_url, tmpdir, branch=target_branch)
    
    # 数据集文件路径(Data Factory默认将数据集放在datasets目录下,文件名对应数据集名称)
    dataset_file = f"{tmpdir}/datasets/DS_DEV_OP_XXX.json"
    
    # 读取并修改数据集配置
    with open(dataset_file, 'r') as f:
        dataset_config = json.load(f)
    # 示例:修改数据集描述
    dataset_config['properties']['description'] = 'Updated via SDK from Git branch'
    
    # 保存修改并提交推送
    with open(dataset_file, 'w') as f:
        json.dump(dataset_config, f, indent=2)
    repo.index.add([dataset_file])
    repo.index.commit("Update dataset via SDK")
    repo.remote('origin').push()

方法二:使用Data Factory SDK的Git资源操作接口

无需直接操作Git仓库,通过SDK提供的Git资源专用接口读写分支内的资源:

from azure.mgmt.datafactory.models import GitResourceParameters

# 获取Git分支中的数据集内容
git_resource = adf_client.git_repositories.get_git_resource(
    resource_group_name=resource_group_name,
    factory_name=factory_name,
    git_resource_parameters=GitResourceParameters(
        resource_path='/datasets/DS_DEV_OP_XXX',
        branch_name=target_branch,
        repository_type=git_type
    )
)

# 查看原始内容
print(git_resource.resource_content)

# 修改内容并更新到分支
updated_content = git_resource.resource_content.replace('原配置内容', '新配置内容')
adf_client.git_repositories.update_git_resource(
    resource_group_name=resource_group_name,
    factory_name=factory_name,
    git_resource_parameters=GitResourceParameters(
        resource_path='/datasets/DS_DEV_OP_XXX',
        branch_name=target_branch,
        repository_type=git_type,
        resource_content=updated_content
    )
)

注意事项

  • 确保服务主体拥有Git仓库的读写权限,以及Data Factory的协作权限。
  • repository_type需与Data Factory关联的Git类型严格匹配(GitHub或AzureDevOpsGit)。
  • 操作前确认目标分支已存在于Git仓库中。

内容的提问来源于stack exchange,提问作者Ravi Kiran G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:55:49