Övervaka en Azure Data Factory programmatiskt

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du övervakar en pipeline i en datafabrik med hjälp av olika SDK:er (Software Development Kit).

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Dataområde

Data Factory lagrar endast pipelinekörningsdata i 45 dagar. När du programmatiskt frågar efter data om Data Factory-pipelinekörningar – till exempel med PowerShell-kommandot Get-AzDataFactoryV2PipelineRun – finns det inga maximala datum för valfria LastUpdatedAfterLastUpdatedBefore och parametrar. Men om du till exempel frågar efter data för det senaste året får du inget fel, utan endast pipelinekörningsdata från de senaste 45 dagarna.

Om du vill behålla pipelinekörningsdata i mer än 45 dagar konfigurerar du din egen diagnostikloggning med Azure Monitor.

Information om pipelinekörning

Information om egenskaper för pipelinekörning finns i PipelineRun API-referens. En pipelinekörning har olika status under livscykeln, och de möjliga värdena för körningsstatus visas nedan:

  • I kö
  • InProgress
  • Slutfördes
  • Misslyckades
  • Avbryter
  • Avbrutet

.NET

En fullständig genomgång av hur du skapar och övervakar en pipeline med hjälp av .NET SDK finns i Skapa en datafabrik och pipeline med .NET.

  1. Lägg till följande kod för att kontinuerligt kontrollera status för pipelinekörningen tills den har kopierat data.

    // 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. Lägg till följande kod som hämtar information om kopieringsaktivitetskörning, till exempel storleken på läs-/skrivskyddade data.

    // 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();
    

Fullständig dokumentation om .NET SDK finns i Referens för Data Factory .NET SDK.

Python

En fullständig genomgång av hur du skapar och övervakar en pipeline med Python SDK finns i Skapa en datafabrik och pipeline med Python.

Lägg till följande kod för att övervaka pipelinekörningen:

# 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])

Fullständig dokumentation om Python SDK finns i Data Factory Python SDK-referens.

REST-API

En fullständig genomgång av hur du skapar och övervakar en pipeline med hjälp av REST API finns i Skapa en datafabrik och pipeline med hjälp av REST API.

  1. Kör följande skript för att kontinuerligt kontrollera pipelinekörningens status tills kopieringen av data är klar.

    $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. Kör följande skript för att hämta körningsinformation för kopieringsaktiviteten, till exempel storleken på data som lästs/skrivits.

    $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
    

Fullständig dokumentation om REST API finns i Referens för REST API för Data Factory.

PowerShell

En fullständig genomgång av hur du skapar och övervakar en pipeline med PowerShell finns i Skapa en datafabrik och pipeline med PowerShell.

  1. Kör följande skript för att kontinuerligt kontrollera pipelinekörningens status tills kopieringen av data är klar.

    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. Kör följande skript för att hämta körningsinformation för kopieringsaktiviteten, till exempel storleken på data som lästs/skrivits.

    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"
    

Fullständig dokumentation om PowerShell-cmdletar finns i Referens för PowerShell-cmdlet för Data Factory.

Mer information om hur du använder Azure Monitor för att övervaka Data Factory-pipelines finns i artikeln Övervaka pipelines med Hjälp av Azure Monitor .