Activité Until dans Azure Data Factory et Synapse Analytics
S’APPLIQUE À : Azure Data Factory
Azure Synapse Analytics
Conseil
Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !
L’activité Until fournit les mêmes fonctionnalités qu’une structure de boucle do-until dans les langages de programmation. Elle exécute un ensemble d’activités dans une boucle jusqu’à ce que la condition associée à l’activité retourne la valeur true. Si une activité interne échoue, l’activité Until ne s’arrête pas. Vous pouvez spécifier une valeur de délai d’attente pour l’activité Until.
Créer une activité Until avec l’interface utilisateur
Pour utiliser une activité Until dans un pipeline, effectuez les étapes suivantes :
Recherchez Until dans le volet Activités de pipeline, puis faites glisser une activité Until vers le canevas du pipeline.
Sélectionnez l’activité Until sur le canevas si elle ne l’est pas déjà, puis son onglet Paramètres pour en modifier les détails.
Entrez une expression qui sera évaluée après l’exécution de toutes les activités enfants définies dans l’activité Until. Si l’expression est évaluée à false, l’activité Until exécute toutes ses activités enfants. Lorsqu’elle est évaluée à true, l’activité Until se termine. L’expression peut être une expression de chaîne littérale ou toute combinaison d’expressions dynamiques, de fonctions, de variables système ou de sorties d’autres activités. L’exemple ci-dessous vérifie la valeur d’une variable de tableau de pipeline précédemment définie appelée TestVariable pour voir si elle correspond à ['done'].
Définissez les activités exécutées par l’activité Until en sélectionnant directement le bouton Modifier les activités sur l’activité Until, ou en sélectionnant l’onglet Activités pour effectuer votre choix. Un nouveau volet de l’éditeur d’activités s’affiche, dans lequel vous pouvez ajouter activités que l’activité Until devra exécuter. Dans cet exemple, une activité Set Variable définit simplement la valeur de la variable référencée dans l’expression susmentionnée sur [« done »], de sorte que l’expression de l’activité Until est vraie la première fois qu’elle est exécutée, et l’activité Until s’arrête. Dans votre utilisation réelle, vous pouvez vérifier toutes les conditions requises et l’activité jusqu’à ce que l’activité continue à exécuter ses activités enfants chaque fois que l’expression est évaluée, jusqu’à ce que les conditions soient remplies.
Syntaxe
{
"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"
}
Propriétés type
Propriété | Description | Valeurs autorisées | Obligatoire |
---|---|---|---|
name | Nom de l’activité Until . |
String | Oui |
type | Doit être défini sur Until. | String | Oui |
expression | Expression qui doit retourner true ou false | Expression. | Oui |
délai d'expiration | La boucle do-until expire à la fin du délai d’attente spécifié ici. | Chaîne. d.hh:mm:ss (ou) hh:mm:ss . La valeur par défaut est de sept jours. Valeur maximale : 90 jours. |
Non |
Activités | Ensemble d’activités qui sont exécutées jusqu’à ce que l’expression retourne true . |
Tableau des activités. | Oui |
Exemple 1
Notes
Cette section fournit des définitions JSON et des exemples de commandes PowerShell pour exécuter le pipeline. Pour une procédure pas à pas avec des instructions détaillées permettant de créer un pipeline en utilisant des définitions JSON et Azure PowerShell, consultez Didacticiel : créer une fabrique de données avec Azure PowerShell.
Pipeline avec activité Until
Dans cet exemple, le pipeline a deux activités : Until et Wait. L’activité Wait attend pendant la période spécifiée avant d’exécuter l’activité Web dans la boucle. Pour en savoir plus sur les expressions et fonctions, consultez Langage d'expression et fonctions.
{
"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"
}
]
}
}
Exemple 2
Le pipeline dans cet exemple copie les données depuis un dossier d’entrée vers un dossier de sortie dans une boucle. La boucle se termine quand la valeur du paramètre repeat est définie sur false ou après un délai d’attente d’une minute.
Pipeline avec l’activité Until (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"
}
}
}
}
Service lié Stockage Azure (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Jeu de données d’objets Blob Azure paramétrable (BlobDataset.json)
Le pipeline définit folderPath sur la valeur de paramètre outputPath1 ou outputPath2 du pipeline.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Code JSON des paramètres du pipeline (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Commandes PowerShell
Notes
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Ces commandes supposent que vous avez enregistré les fichiers JSON dans le dossier : 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
}
Contenu connexe
Consultez d’autres activités de flux de contrôle prises en charge :