簡體   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