Until-Aktivität in Azure Data Factory und Synapse Analytics
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Die Until-Aktivität erfüllt die gleiche Funktion wie eine do-until-Schleifenstruktur in Programmiersprachen. Sie führt eine Reihe von Aktivitäten in einer Schleife aus, bis die der Aktivität zugeordnete Bedingung als „true“ ausgewertet wird. Wenn bei einer inneren Aktivität ein Fehler auftritt, wird die Until-Aktivität nicht beendet. Sie können einen Timeoutwert für die Until-Aktivität angeben.
Erstellen einer Until-Aktivität mit der Benutzeroberfläche
Führen Sie die folgenden Schritte aus, um eine Until-Aktivität in einer Pipeline zu verwenden:
Suchen Sie im Bereich mit den Pipelineaktivitäten nach Until, und ziehen Sie eine Until-Aktivität auf die Pipelinecanvas.
Wählen Sie in diesem Bereich die neue Until-Aktivität aus (wenn sie noch nicht ausgewählt wurde), und wählen Sie anschließend die Registerkarte Einstellungen aus, um die Details zu bearbeiten.
Geben Sie einen Ausdruck ein, der ausgewertet wird, nachdem alle in der Until-Aktivität definierten untergeordneten Aktivitäten ausgeführt wurden. Wenn der Ausdruck zu „false“ ausgewertet wird, führt die Until-Aktivität alle ihre untergeordneten Aktivitäten erneut aus. Wenn er zu „true“ ausgewertet wird, wird die Until-Aktivität abgeschlossen. Der Ausdruck können literale Zeichenfolgenausdrücke oder eine beliebige Kombination aus dynamischen Ausdrücken, Funktionen, Systemvariablenoder Ausgaben von anderen Aktivitäten sein. Im folgenden Beispiel wird der Wert einer zuvor definierten Pipelinearrayvariablen namens TestVariable daraufhin überprüft, ob er zu ['done'] (erledigt) ausgewertet wird.
Definieren Sie Aktivitäten, welche die Until-Aktivität ausführen wird, indem Sie direkt auf der Until-Aktivität auf die Schaltfläche „Aktivitäten bearbeiten“ klicken, oder indem Sie die Registerkarte „Aktivitäten“ auswählen, um sie dort auszuwählen. Ein Editor-Bereich für neue Aktivitäten wird angezeigt, in dem Sie alle Aktivitäten hinzufügen können, welche die Until-Aktivität ausführen soll. In diesem Beispiel legt eine „Set Variable“-Aktivität einfach den Wert der Variablen, auf die im voranstehenden Ausdruck verwiesen wird, auf ['done'] fest, sodass der Ausdruck der Until-Aktivität bei der ersten Ausführung „true“ ist, woraufhin die Until-Aktivität beendet wird. In Ihrer realen Verwendung können Sie alle erforderlichen Bedingungen überprüfen, und die Until-Aktivität führt ihre untergeordneten Aktivitäten bei jeder Auswertung des Ausdrucks weiter aus, bis die Bedingungen erfüllt sind.
Syntax
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "<expression that evaluates to true or false>",
"type": "Expression"
},
"timeout": "<time out for the loop. for example: 00:10:00 (10 minute)>",
"activities": [
{
"<Activity 1 definition>"
},
{
"<Activity 2 definition>"
},
{
"<Activity N definition>"
}
]
},
"name": "MyUntilActivity"
}
Typeigenschaften
Eigenschaft | BESCHREIBUNG | Zulässige Werte | Erforderlich |
---|---|---|---|
name | Der Name der Until -Aktivität. |
String | Ja |
type | Muss auf Until festgelegt werden. | String | Ja |
expression | Ausdruck, der als „true“ oder „false“ ausgewertet werden muss. | Ausdruck | Ja |
timeout | Für die do-until-Schleife tritt nach der hier angegebenen Zeit ein Timeout auf. | Eine Zeichenfolge. d.hh:mm:ss oder hh:mm:ss . Der Standardwert ist sieben Tage. Maximalwert: 90 Tage. |
Nein |
activities | Reihe von Aktivitäten, die ausgeführt werden, bis der Ausdruck als true ausgewertet wird. |
Array von Aktivitäten | Ja |
Beispiel 1
Hinweis
Dieser Abschnitt enthält die JSON-Definitionen und PowerShell-Beispielbefehle zum Ausführen der Pipeline. Eine exemplarische Vorgehensweise mit einer ausführlichen Anleitung zum Erstellen einer Pipeline mithilfe von Azure PowerShell und JSON-Definitionen finden Sie im Tutorial zum Erstellen einer Data Factory mithilfe von Azure PowerShell.
Pipeline mit Until-Aktivität
In diesem Beispiel besitzt die Pipeline zwei Aktivitäten: Until und Wait. Die Wait-Aktivität führt nach der angegebenen Wartezeit die Web-Aktivität in der Schleife aus. Weitere Informationen zu Ausdrücken und Funktionen finden Sie unter Ausdruckssprache und Funktionen.
{
"name": "DoUntilPipeline",
"properties": {
"activities": [
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "@equals('Failed', coalesce(body('MyUnauthenticatedActivity')?.status, actions('MyUnauthenticatedActivity')?.status, 'null'))",
"type": "Expression"
},
"timeout": "00:10:00",
"activities": [
{
"name": "MyUnauthenticatedActivity",
"type": "WebActivity",
"typeProperties": {
"method": "get",
"url": "https://www.fake.com/",
"headers": {
"Content-Type": "application/json"
}
},
"dependsOn": [
{
"activity": "MyWaitActivity",
"dependencyConditions": [ "Succeeded" ]
}
]
},
{
"type": "Wait",
"typeProperties": {
"waitTimeInSeconds": 1
},
"name": "MyWaitActivity"
}
]
},
"name": "MyUntilActivity"
}
]
}
}
Beispiel 2
Die Pipeline in diesem Beispiel kopiert Daten aus einem Eingabeordner im Rahmen einer Schleife in einen Ausgabeordner. Die Schleife endet, wenn der Wert für den repeat-Parameter auf „false“ festgelegt wird oder nach einer Minute ein Timeout auftritt.
Pipeline mit Until-Aktivität (Adfv2QuickStartPipeline.json)
{
"name": "Adfv2QuickStartPipeline",
"properties": {
"activities": [
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "@equals('false', pipeline().parameters.repeat)",
"type": "Expression"
},
"timeout": "00:10:00",
"activities": [
{
"name": "CopyFromBlobToBlob",
"type": "Copy",
"inputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.inputPath"
},
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.outputPath"
},
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "BlobSink"
}
},
"policy": {
"retry": 1,
"timeout": "00:10:00",
"retryIntervalInSeconds": 60
}
}
]
},
"name": "MyUntilActivity"
}
],
"parameters": {
"inputPath": {
"type": "String"
},
"outputPath": {
"type": "String"
},
"repeat": {
"type": "String"
}
}
}
}
Mit Azure Storage verknüpfter Dienst (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Parametrisiertes Azure Blob-Dataset (BlobDataset.json)
Die Pipeline legt für folderPath entweder den Wert des Parameters outputPath1 oder den Wert des Parameters outputPath2 der Pipeline fest.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON-Datei mit Pipelineparametern (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
PowerShell-Befehle
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Bei diesen Befehlen wird davon ausgegangen, dass Sie die JSON-Dateien im folgenden Ordner gespeichert haben: C:\ADF.
Connect-AzAccount
Select-AzSubscription "<Your subscription name>"
$resourceGroupName = "<Resource Group Name>"
$dataFactoryName = "<Data Factory Name. Must be globally unique>";
Remove-AzDataFactoryV2 $dataFactoryName -ResourceGroupName $resourceGroupName -force
Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryName
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -DefinitionFile "C:\ADF\AzureStorageLinkedService.json"
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "BlobDataset" -DefinitionFile "C:\ADF\BlobDataset.json"
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "Adfv2QuickStartPipeline" -DefinitionFile "C:\ADF\Adfv2QuickStartPipeline.json"
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName "Adfv2QuickStartPipeline" -ParameterFile C:\ADF\PipelineParameters.json
while ($True) {
$run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId
if ($run) {
if ($run.Status -ne 'InProgress') {
Write-Host "Pipeline run finished. The status is: " $run.Status -foregroundcolor "Yellow"
$run
break
}
Write-Host "Pipeline is running...status: InProgress" -foregroundcolor "Yellow"
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"
}
Start-Sleep -Seconds 15
}
Zugehöriger Inhalt
Informationen zu weiteren unterstützten Ablaufsteuerungsaktivitäten: