繁体   English   中英

如何从 ADF 中的 Executed Pipeline 获取输出参数?

[英]How to get output parameter from Executed Pipeline in ADF?

我有一个 databricks 管道可以提供输出,但目前,我需要从 Executed Pipelines 运行 databricks,当我尝试运行它时,我的 databricks 输出没有显示在 Executed Pipelines 上? 这个管道不能显示输出吗?

所以这是我的 Databricks 输出结果。

在此处输入图片说明

这是我的执行管道。

在此处输入图片说明

如何从 Executed Pipeline 获取runOutput结果?

数据砖活动在子管道内。 因此执行管道活动不会显示子管道活动的输出属性。

您可以尝试解决此问题,您可以将子管道的输出写入数据库表。 输出表示 blob 名称或将父 runID 写入 SQL 表。

通过这样做,父管道将获得参考以获取输出。

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

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

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

Azure 数据工厂和日志分析

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

API 调用中的示例正文

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

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

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

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

因此,您可以做的是找到使用管道 API 运行的子管道的管道运行 ID,然后使用它来使用活动 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

身体:

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

要使用上一个 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

身体:

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

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

最终输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM