Programmatisch een Azure Data Factory bewaken

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u een pijplijn in een data factory bewaakt met behulp van verschillende SDK's (Software Development Kits).

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Gegevensbereik

Data Factory slaat alleen pijplijnuitvoeringsgegevens op gedurende 45 dagen. Wanneer u programmatisch query's uitvoert op gegevens over Data Factory-pijplijnuitvoeringen, bijvoorbeeld met de PowerShell-opdracht Get-AzDataFactoryV2PipelineRun , zijn er geen maximumdatums voor de optionele LastUpdatedAfter parameters.LastUpdatedBefore Maar als u een query uitvoert op gegevens voor het afgelopen jaar, krijgt u bijvoorbeeld geen foutmelding, maar alleen pijplijnuitvoeringsgegevens uit de afgelopen 45 dagen.

Als u pijplijnuitvoeringsgegevens langer dan 45 dagen wilt bewaren, stelt u uw eigen diagnostische logboekregistratie in met Azure Monitor.

Informatie over pijplijnuitvoering

Raadpleeg voor pijplijnuitvoeringseigenschappen de naslaginformatie over de PipelineRun-API. Een pijplijnuitvoering heeft een andere status tijdens de levenscyclus. De mogelijke waarden van de uitvoeringsstatus worden hieronder vermeld:

  • In wachtrij geplaatst
  • InProgress
  • Geslaagd
  • Mislukt
  • Wordt geannuleerd
  • Geannuleerd

.NET

Zie Een data factory en pijplijn maken met behulp van .NET SDK voor een volledig overzicht van het maken en bewaken van een pijplijn met behulp van .NET.

  1. Voeg de volgende code toe om continu de status van de pijplijnuitvoering te controleren totdat het kopiëren van de gegevens is voltooid.

    // 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. Voeg de volgende code toe om uitvoeringsdetails van de kopieeractiviteit op te halen, bijvoorbeeld de grootte van de gelezen/geschreven gegevens.

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

Zie de naslaginformatie over de .NET SDK voor Data Factory voor volledige documentatie over .NET SDK.

Python

Zie Een data factory en pijplijn maken met behulp van Python voor een volledige procedure voor het maken en bewaken van een pijplijn met behulp van Python.

Als u de pijplijnuitvoering wilt bewaken, voegt u de volgende code toe:

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

Zie de naslaginformatie over de Data Factory Python SDK voor volledige documentatie over Python SDK.

REST-API

Zie Een data factory en pijplijn maken met behulp van REST API voor een volledige procedure voor het maken en bewaken van een pijplijn met behulp van REST API.

  1. Voer het volgende script uit om continu de status van de pijplijnuitvoering te controleren totdat het kopiëren van de gegevens is voltooid.

    $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. Voer het volgende script uit om uitvoeringsdetails van de kopieeractiviteit op te halen, zoals de omvang van de gelezen of weggeschreven gegevens.

    $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
    

Zie de naslaginformatie over de Rest API van Data Factory voor volledige documentatie over REST API.

PowerShell

Zie Een data factory en pijplijn maken met Behulp van PowerShell voor een volledig overzicht van het maken en bewaken van een pijplijn met behulp van PowerShell.

  1. Voer het volgende script uit om continu de status van de pijplijnuitvoering te controleren totdat het kopiëren van de gegevens is voltooid.

    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. Voer het volgende script uit om uitvoeringsdetails van de kopieeractiviteit op te halen, zoals de omvang van de gelezen of weggeschreven gegevens.

    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"
    

Zie de naslaginformatie over PowerShell-cmdlets voor Data Factory PowerShell voor volledige documentatie over PowerShell-cmdlets.

Zie het artikel Pijplijnen bewaken met behulp van Azure Monitor voor meer informatie over het gebruik van Azure Monitor voor het bewaken van Data Factory-pijplijnen.