如何从 ADF 中的执行管道获取输出参数?

Rud*_*tra 7 azure azure-data-factory azure-databricks

我有一个可以提供输出的 databricks 管道,但目前,我需要从执行管道运行 databricks,当我尝试运行它时,我的 databricks 输出没有显示在执行管道上?该管道无法显示输出吗?

这是我的 Databricks 输出结果。

[![在此处输入图像描述][1]][1]

这是我的执行管道。

在此输入图像描述

runOutput如何从执行管道获取结果?

Tre*_*ura 6

您可以使用 Azure REST API 查询活动运行,因此您可以执行 API 调用来获取您感兴趣的管道的最后一次管道运行。然后,您使用这些详细信息调用另一个 REST API 以获取该活动的输出您感兴趣的管道 RunID。

此方法的优点是不需要将输出写入文件或数据库,而只需在 ADF 的 Azure Monitor 日志中查找该活动的输出。它还可用于从完全不同的数据工厂获取活动输出。

您实际上可以参考这篇文章来展示如何使用 ADF 的 Azure REST API 来查询管道和活动运行:

Azure 数据工厂和日志分析

这里重要的部分是主体和操作数:

API 调用中的示例正文

以下是有关如何使用查询管道 API 的 Microsoft 文档:

https://learn.microsoft.com/en-us/rest/api/datafactory/pipeline-runs/query-by-factory

以下是有关如何查询活动 API 的 Microsoft 文档:

https://learn.microsoft.com/en-us/rest/api/datafactory/pipeline-runs/query-by-factory

因此,您可以做的是找到使用管道 API 运行的子管道的 Pipeline RunID,然后使用它来使用 Activity API 查询该管道内的特定活动执行。

真实例子:

父管道:

父管道

子管道:

子管道

要使用 Web 请求获取子管道的最后一次管道运行:

获取最后一次管道运行

网址:

https://management.azure.com/subscriptions/@{pipeline().parameters.SubscriptionId}/resourceGroups/@{pipeline().parameters.ResourceGroupName}/providers/Microsoft.DataFactory/factories/@{pipeline().DataFactory}/queryPipelineRuns?api-version=2018-06-01
Run Code Online (Sandbox Code Playgroud)

身体:

{
  "lastUpdatedAfter": "2018-06-16T00:36:44.3345758Z",
  "lastUpdatedBefore": "@{utcnow()}",
  "filters": [
    {
      "operand": "PipelineName",
      "operator": "Equals",
      "values": [
        "@{pipeline().parameters.PipelineName}"
      ]
    },
    {
      "operand": "LatestOnly",
      "operator": "Equals",
      "values": [
        true
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

要使用先前 Web 调用中的管道详细信息获取活动输出:

获取子级的活动输出

网址:

https://management.azure.com/subscriptions/@{pipeline().parameters.SubscriptionId}/resourceGroups/@{pipeline().parameters.ResourceGroupName}/providers/Microsoft.DataFactory/factories/@{pipeline().DataFactory}/pipelineruns/@{activity('Get Last ChildPipeline Run Details').output.value[0].runId}/queryActivityruns?api-version=2018-06-01
Run Code Online (Sandbox Code Playgroud)

身体:

{
  "lastUpdatedAfter": "2018-06-16T00:36:44.3345758Z",
  "lastUpdatedBefore": "@{utcnow()}",
  "filters": [
    {
      "operand": "ActivityName",
      "operator": "Equals",
      "values": [
        "@{pipeline().parameters.ActivityName}"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是使用上面所示的过程在父管道中的成功输出:

最终输出