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.
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; }
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.
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 } }
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.
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 }
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.
Gerelateerde inhoud
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.