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

如何在Synapse/ADF中通过名称获取DeltaLiveTables的pipeline_id?

在Synapse/ADF中通过DLT管道名称获取pipeline_id的实现方案

可用活动类型及实现方式

1. Web 活动(推荐,无需额外资源)

直接调用Databricks的DLT管道REST API,通过管道名称过滤得到pipeline_id:

  • API端点:GET https://<databricks-workspace-url>/api/2.0/pipelines
  • 配置步骤:
    • 在Synapse/ADF中新建Web活动,设置请求方法为GET
    • 填入上述API端点,替换<databricks-workspace-url>为你的Databricks工作区URL
    • 请求头中添加认证信息(如Bearer Token,可通过Azure AD服务主体获取)
    • 活动执行后,通过动态内容解析返回的JSON结果,提取目标管道的ID:
      @first(filter(activity('Web_Get_DLT_Pipelines').output.pipelines, equals(item().name, '<你的DLT管道名称>'))).pipeline_id
      

2. PowerShell 活动(Synapse专属)

利用Synapse的PowerShell活动执行类似你现有Shell脚本的逻辑:

  • 编写PowerShell脚本调用Databricks API,根据管道名称查询ID:
    # 配置参数
    $databricksUrl = "<databricks-workspace-url>"
    $token = "<你的Databricks认证Token>"
    $targetPipelineName = "<你的DLT管道名称>"
    
    # 调用API获取所有管道
    $headers = @{Authorization = "Bearer $token"}
    $response = Invoke-RestMethod -Uri "$databricksUrl/api/2.0/pipelines" -Method Get -Headers $headers
    
    # 过滤目标管道并提取ID
    $targetPipeline = $response.pipelines | Where-Object { $_.name -eq $targetPipelineName }
    if ($targetPipeline) {
        Write-Output $targetPipeline.pipeline_id
    } else {
        Write-Error "未找到名称为$targetPipelineName的DLT管道"
    }
    
  • 将脚本填入Synapse的PowerShell活动中,执行后可通过活动输出获取pipeline_id。

3. Azure Function 活动(适合复杂逻辑扩展)

如果需要更灵活的处理(如缓存、多环境适配),可以编写Azure Function调用Databricks API,接收管道名称参数并返回对应的pipeline_id,再在Synapse/ADF中通过Azure Function活动调用该函数。

与原有Shell脚本的逻辑对齐

你的原有Shell脚本通过判断管道是否存在来创建或更新,在Synapse中可结合上述活动结果,通过条件分支活动实现相同逻辑:

  1. 先用Web/PowerShell活动查询管道是否存在(获取pipeline_id)
  2. 若返回空值,调用创建管道的Web活动(对应脚本中的Post请求)
  3. 若返回有效pipeline_id,调用更新管道的Web活动(对应脚本中的Put请求,URL拼接pipeline_id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:25:14