[英]How to get output parameter from Executed Pipeline in ADF?
数据砖活动在子管道内。 因此执行管道活动不会显示子管道活动的输出属性。
您可以尝试解决此问题,您可以将子管道的输出写入数据库表。 输出表示 blob 名称或将父 runID 写入 SQL 表。
通过这样做,父管道将获得参考以获取输出。
您可以使用 Azure REST API 查询活动运行,因此您可以执行 API 调用以获取您感兴趣的管道的最后一个管道运行。然后您使用这些详细信息调用另一个 REST API 以获取该管道的 Activity 输出您感兴趣的管道 RunID。
此方法的优点是无需将输出写入文件或数据库,而只需在 ADF 的 Azure Monitor 日志中查找该活动的输出。 它还可以用于从完全不同的数据工厂获取活动输出。
您实际上可以参考这篇文章来展示如何使用用于 ADF 的 Azure REST 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.