Share via


以程式設計方式監視 Azure Data Factory

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文說明如何使用不同的軟體開發套件 (SDK) 來監視資料處理站中的管線。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

資料範圍

Data Factory 只會儲存管線執行資料 45 天。 當您以程式設計方式查詢有關 Data Factory 管線執行的資料時 (例如,使用 PowerShell 命令 Get-AzDataFactoryV2PipelineRun),可選的 LastUpdatedAfterLastUpdatedBefore 參數沒有最大日期。 但如果以查詢過去一年的資料為例,查詢不會傳回錯誤,只傳回最近 45 天的管道執行資料。

如果管道執行資料要保存 45 天以上,請使用 Azure 監視器設定您自己的診斷記錄。

管道執行資訊

如需管道執行屬性,請參閱 PipelineRun API 參考。 管道執行在生命週期期間有不同的狀態,執行狀態的可能值如下所列:

  • 佇列
  • 進行中
  • 成功
  • 失敗
  • 正在取消
  • 已取消

.NET

如需使用 .NET SDK 建立並監視管道的完整逐步解說,請參閱使用 .NET 建立資料處理站和管道

  1. 新增下列程式碼來持續檢查管線執行狀態,直到它完成資料複製為止。

    // Monitor the pipeline run
    Console.WriteLine("Checking pipeline run status...");
    PipelineRun pipelineRun;
    while (true)
    {
        pipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, runResponse.RunId);
        Console.WriteLine("Status: " + pipelineRun.Status);
        if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. 新增下列程式碼來擷取複製活動執行詳細資料,例如所讀取/寫入的資料大小。

    // Check the copy activity run details
    Console.WriteLine("Checking copy activity run details...");
    
    RunFilterParameters filterParams = new RunFilterParameters(
        DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10));
    ActivityRunsQueryResponse queryResponse = client.ActivityRuns.QueryByPipelineRun(
        resourceGroup, dataFactoryName, runResponse.RunId, filterParams);
    if (pipelineRun.Status == "Succeeded")
        Console.WriteLine(queryResponse.Value.First().Output);
    else
        Console.WriteLine(queryResponse.Value.First().Error);
    Console.WriteLine("\nPress any key to exit...");
    Console.ReadKey();
    

如需有關 .NET SDK 的完整文件,請參閱 Data Factory .NET SDK 參考

Python

如需使用 Python SDK 建立並監視管道的完整逐步解說,請參閱使用 Python 建立資料處理站和管線

若要監視管線執行,請新增下列程式碼:

# Monitor the pipeline run
time.sleep(30)
pipeline_run = adf_client.pipeline_runs.get(
    rg_name, df_name, run_response.run_id)
print("\n\tPipeline run status: {}".format(pipeline_run.status))
filter_params = RunFilterParameters(
    last_updated_after=datetime.now() - timedelta(1), last_updated_before=datetime.now() + timedelta(1))
query_response = adf_client.activity_runs.query_by_pipeline_run(
    rg_name, df_name, pipeline_run.run_id, filter_params)
print_activity_run_details(query_response.value[0])

如需有關 Python SDK 的完整文件,請參閱 Data Factory Python SDK 參考

REST API

如需使用 REST API 建立並監視管道的完整逐步解說,請參閱使用 REST API 建立資料處理站和管道

  1. 執行下列程式碼以持續檢查管線執行狀態,直到完成複製資料為止。

    $request = "https://management.azure.com/subscriptions/${subsId}/resourceGroups/${resourceGroup}/providers/Microsoft.DataFactory/factories/${dataFactoryName}/pipelineruns/${runId}?api-version=${apiVersion}"
    while ($True) {
        $response = Invoke-RestMethod -Method GET -Uri $request -Header $authHeader
        Write-Host  "Pipeline run status: " $response.Status -foregroundcolor "Yellow"
    
        if ( ($response.Status -eq "InProgress") -or ($response.Status -eq "Queued") ) {
            Start-Sleep -Seconds 15
        }
        else {
            $response | ConvertTo-Json
            break
        }
    }
    
  2. 執行下列指令碼來取出複製活動執行詳細資料,例如,讀取/寫入資料的大小。

    $request = "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DataFactory/factories/${factoryName}/pipelineruns/${runId}/queryActivityruns?api-version=${apiVersion}&startTime="+(Get-Date).ToString('yyyy-MM-dd')+"&endTime="+(Get-Date).AddDays(1).ToString('yyyy-MM-dd')+"&pipelineName=Adfv2QuickStartPipeline"
    $response = Invoke-RestMethod -Method POST -Uri $request -Header $authHeader
    $response | ConvertTo-Json
    

如需有關 REST API 的完整文件,請參閱 Data Factory REST API 參考

PowerShell

如需使用 PowerShell 建立並監視管道的完整逐步解說,請參閱使用 PowerShell 建立資料處理站和管道

  1. 執行下列程式碼以持續檢查管線執行狀態,直到完成複製資料為止。

    while ($True) {
        $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId
    
        if ($run) {
            if ( ($run.Status -ne "InProgress") -and ($run.Status -ne "Queued") ) {
                Write-Output ("Pipeline run finished. The status is: " +  $run.Status)
                $run
                break
            }
            Write-Output ("Pipeline is running...status: " + $run.Status)
        }
    
        Start-Sleep -Seconds 30
    }
    
  2. 執行下列指令碼來取出複製活動執行詳細資料,例如,讀取/寫入資料的大小。

    Write-Host "Activity run details:" -foregroundcolor "Yellow"
    $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
    $result
    
    Write-Host "Activity 'Output' section:" -foregroundcolor "Yellow"
    $result.Output -join "`r`n"
    
    Write-Host "\nActivity 'Error' section:" -foregroundcolor "Yellow"
    $result.Error -join "`r`n"
    

如需有關 PowerShell Cmdlet 的完整文件,請參閱 Data Factory PowerShell Cmdlet 參考

請參閱使用 Azure 監視器來監視管線文章,以了解如何使用 Azure 監視器來監視 Data Factory 管線。