Créer un déclencheur qui exécute un pipeline sur une fenêtre bascule
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 !
Cet article décrit les étapes permettant de créer, de démarrer et d’effectuer le monitoring d’un déclencheur de fenêtre bascule. Pour obtenir des informations générales sur les déclencheurs et les types pris en charge, consultez Exécution de pipelines et déclencheurs.
Les déclencheurs de fenêtre bascule sont un type de déclencheur qui s’active à un intervalle de temps périodique à partir d’une heure de début spécifiée, tout en conservant son état. Les fenêtres bascule sont une série d’intervalles de temps contigus fixes, qui ne se chevauchent pas. Un déclencheur de fenêtre bascule a une relation un à un avec un pipeline et ne peut référencer qu’un seul pipeline.
Un déclencheur de fenêtre bascule est une solution plus lourde qu’un déclencheur de planification. Il offre un ensemble de fonctionnalités conçues pour les scénarios complexes (par exemple la dépendance vis-à-vis d’autres déclencheurs de fenêtre bascule, la réexécution d’un travail après un échec et la définition d’une nouvelle tentative utilisateur pour les pipelines). Pour mieux comprendre la différence entre le déclencheur de planification et le déclencheur de fenêtre bascule, consultez Comparaison des types de déclencheurs.
Expérience du portail Azure Data Factory et Azure Synapse
- Pour créer un déclencheur de fenêtre bascule dans le portail Azure, sélectionnez l’onglet Déclencheurs, puis Nouveau.
- Une fois le volet de configuration de déclencheur ouvert, sélectionnez Fenêtre bascule. Définissez ensuite vos propriétés de déclencheur de fenêtre bascule.
- Quand vous avez terminé, Sélectionnez Enregistrer.
Propriétés de type de déclencheur de fenêtre bascule
Une fenêtre bascule a les propriétés de type de déclencheur suivantes :
{
"name": "MyTriggerName",
"properties": {
"type": "TumblingWindowTrigger",
"runtimeState": "<<Started/Stopped/Disabled - readonly>>",
"typeProperties": {
"frequency": <<Minute/Hour>>,
"interval": <<int>>,
"startTime": "<<datetime>>",
"endTime": <<datetime - optional>>,
"delay": <<timespan - optional>>,
"maxConcurrency": <<int>> (required, max allowed: 50),
"retryPolicy": {
"count": <<int - optional, default: 0>>,
"intervalInSeconds": <<int>>,
},
"dependsOn": [
{
"type": "TumblingWindowTriggerDependencyReference",
"size": <<timespan - optional>>,
"offset": <<timespan - optional>>,
"referenceTrigger": {
"referenceName": "MyTumblingWindowDependency1",
"type": "TriggerReference"
}
},
{
"type": "SelfDependencyTumblingWindowTriggerReference",
"size": <<timespan - optional>>,
"offset": <<timespan>>
}
]
},
"pipeline": {
"pipelineReference": {
"type": "PipelineReference",
"referenceName": "MyPipelineName"
},
"parameters": {
"parameter1": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},
"parameter2": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},
"parameter3": "https://mydemo.azurewebsites.net/api/demoapi"
}
}
}
}
Le tableau suivant présente les principaux éléments JSON liés à la périodicité et à la planification d’un déclencheur de fenêtre bascule.
Élément JSON | Description | Type | Valeurs autorisées | Requis |
---|---|---|---|---|
type |
Type du déclencheur. type est la valeur fixe TumblingWindowTrigger . |
String |
TumblingWindowTrigger |
Oui |
runtimeState |
État actuel du runtime du déclencheur. Cet élément est <readOnly>. |
String |
Started , Stopped , Disabled |
Oui |
frequency |
Chaîne qui représente l’unité de fréquence (minutes, heures ou mois) à laquelle le déclencheur se répète. Si les valeurs de date startTime sont plus précises que la valeur frequency , les dates startTime sont prises en compte quand les limites de la fenêtre sont calculées. Par exemple, si la valeur frequency est hourly et que la valeur startTime est 2017-09-01T10:10:10Z, la première fenêtre est (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). |
String |
Minute , Hour , Month |
Oui |
interval |
Un entier positif qui indique l’intervalle de la valeur frequency , qui détermine la fréquence d’exécution du déclencheur. Par exemple, si interval est 3 et frequency est hour , le déclencheur se répète toutes les 3 heures. L’intervalle d’affichage minimal est de 5 minutes. |
Integer |
Entier positif. | Oui |
startTime |
Première occurrence, qui peut être dans le passé. Le premier intervalle de déclenchement est (startTime , startTime + interval ). |
DateTime |
Une valeurDateTime . |
Oui |
endTime |
Dernière occurrence, qui peut être dans le passé. | DateTime |
Une valeurDateTime . |
Oui |
delay |
Délai duquel différer le démarrage du traitement des données pour la fenêtre. L’exécution du pipeline est démarrée après l’heure d’exécution prévue + delay. delay définit la durée d’attente du déclencheur après l’heure d’échéance avant de déclencher une nouvelle exécution. Le retard ne modifie pas la fenêtre startTime . Par exemple, une valeur delay de 00:10:00 indique un délai de 10 minutes. |
Timespan (hh:mm:ss) |
Une valeur timespan où la valeur par défaut est 00:00:00 . |
Non |
maxConcurrency |
Nombre d’exécutions simultanées du déclencheur qui sont déclenchées pour des fenêtres qui sont prêtes. Par exemple, pour un renvoi des exécutions qui ont eu lieu toutes les heures la veille, 24 fenêtres sont générées. Si maxConcurrency = 10, les événements déclencheurs sont déclenchés uniquement pour les 10 premières fenêtres (00:00-01:00 - 09:00-10:00). Une fois que les 10 premières exécutions déclenchées du pipeline sont terminées, les exécutions du déclencheur sont déclenchées pour les 10 fenêtres suivantes (10:00-11:00 - 19:00-20:00). Pour poursuivre avec l’exemple de maxConcurrency = 10, s’il y a 10 fenêtres prêtes, il y a au total 10 exécutions du pipeline. Si une seule fenêtre est prête, un seul pipeline s’exécute. |
Integer |
Entier compris entre 1 et 50. | Oui |
retryPolicy: Count |
Nombre de nouvelles tentatives avant que l’exécution du pipeline ne soit marquée comme Failed . |
Integer |
Nombre entier, où la valeur par défaut est 0 (aucune nouvelle tentative). | Non |
retryPolicy: intervalInSeconds |
Délai en secondes entre chaque nouvelle tentative | Integer |
Nombre de secondes, où la valeur par défaut est 30. La valeur minimale est 30 . |
Non |
dependsOn: type |
Type d'élément TumblingWindowTriggerReference . Requis si une dépendance est définie. |
String |
TumblingWindowTriggerDependencyReference , SelfDependencyTumblingWindowTriggerReference |
Non |
dependsOn: size |
Taille de la fenêtre bascule de dépendance. | Timespan (hh:mm:ss) |
Une valeur timespan positive où la valeur par défaut correspond à la taille de la fenêtre du déclencheur enfant. |
Non |
dependsOn: offset |
Décalage du déclencheur de dépendance. | Timespan (hh:mm:ss) |
La valeur timespan qui doit être négative dans une autodépendance. Si aucune valeur n’est spécifiée, la fenêtre est la même que le déclencheur lui-même. |
Autodépendance : Oui Autre : Non |
Remarque
Après la publication d’un déclencheur de fenêtre bascule, les valeurs interval
et frequency
ne peuvent pas être modifiées.
Variables système WindowStart et WindowEnd
Vous pouvez utiliser les variables système WindowStart
et WindowEnd
du déclencheur de fenêtre bascule dans votre définition du pipeline (autrement dit, pour une partie d’une requête). Passez les variables système en tant que paramètres à votre pipeline dans la définition du déclencheur. L’exemple suivant montre comment passer ces variables en tant que paramètres.
{
"name": "MyTriggerName",
"properties": {
"type": "TumblingWindowTrigger",
...
"pipeline": {
"pipelineReference": {
"type": "PipelineReference",
"referenceName": "MyPipelineName"
},
"parameters": {
"MyWindowStart": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},
"MyWindowEnd": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
}
}
}
}
}
Pour utiliser les valeurs des variables système WindowStart
et WindowEnd
dans la définition du pipeline, utilisez vos paramètres MyWindowStart
et MyWindowEnd
en conséquence.
Ordre d’exécution des fenêtres dans un scénario de renvoi
Si le déclencheur startTime
se situe dans le passé, sur la base de cette formule, M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, le déclencheur génère {M} exécutions de renvoi en parallèle, en respectant la concurrence des déclencheurs, avant d’exécuter les futures exécutions. L’ordre d’exécution des fenêtres est déterministe, des intervalles les plus anciens aux plus récents. Actuellement, ce comportement ne peut pas être modifié.
Remarque
Dans ce scénario, toutes les exécutions à partir de la valeur startTime
sélectionnée sont exécutées avant le lancement des futures exécutions. Si vous avez besoin d’effectuer un renvoi sur une longue période de temps, il est recommandé de procéder à une charge historique initiale.
Éléments TriggerResource existants
Les points suivants s’appliquent pour la mise à jour d’éléments TriggerResource
existants :
- La valeur de l’élément
frequency
(ou la taille de fenêtre) du déclencheur, ainsi que de l’élémentinterval
ne peuvent pas être modifiées une fois le déclencheur créé. Cette restriction est nécessaire pour le bon fonctionnement des réexécutionstriggerRun
et des évaluations de dépendance. - Si la valeur de l’élément
endTime
du déclencheur change (par ajout ou par mise à jour), l’état des fenêtres qui ont déjà été traitées n’est pas réinitialisé. Le déclencheur respecte la nouvelle valeurendTime
. Si la nouvelle valeurendTime
est antérieure aux fenêtres qui ont déjà été exécutées, le déclencheur s’arrête. Dans le cas contraire, le déclencheur s’arrête quand la nouvelle valeurendTime
est rencontrée.
Nouvelles tentatives de pipelines affectées par l’utilisateur
En cas de défaillance du pipeline, un déclencheur de fenêtre bascule peut réessayer l’exécution du pipeline référencé automatiquement, à l’aide des mêmes paramètres d’entrée, sans intervention de l’utilisateur. Utilisez la propriété retryPolicy
dans la définition du déclencheur pour spécifier cette action.
Dépendance de déclencheur de fenêtre bascule
Pour vous assurer de l'exécution d'un déclencheur de fenêtre bascule après l'exécution réussie d'un autre déclencheur dans la fabrique de données, créez une dépendance de déclencheur de fenêtre bascule.
Annuler une exécution de fenêtre bascule
Vous pouvez annuler des exécutions pour un déclencheur de fenêtre bascule si la fenêtre spécifique se trouve dans l’état En attente, En attente de dépendance, ou En cours d’exécution :
- Si la fenêtre est dans un état En cours d’exécution, annulez l’exécution de pipeline associée, et l’exécution du déclencheur sera ensuite marquée comme Annulée.
- Si la fenêtre se trouve dans un état En attente ou En attente de dépendance, vous pouvez annuler la fenêtre à partir de Surveillance.
Vous pouvez également réexécuter une fenêtre annulée. La réexécution prend les dernières définitions publiées du déclencheur. Les dépendances pour la fenêtre spécifiée sont réévaluées lors de la réexécution.
Exemple pour Azure PowerShell et l’interface de ligne de commande Azure
Cette section montre comment utiliser Azure PowerShell pour créer, démarrer et effectuer le monitoring d’un déclencheur.
Notes
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Prérequis
- Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Azure PowerShell : suivez les instructions de l'article Installer Azure PowerShell sur Windows avec PowerShellGet.
- Azure Data Factory : suivez les instructions dans Créer une fabrique de données Azure à l’aide de PowerShell pour créer une fabrique de données et un pipeline.
Exemple de code
Créez un fichier JSON nommé MyTrigger.json dans le dossier C:\ADFv2QuickStartPSH\ avec le contenu suivant :
Important
Avant d’enregistrer le fichier JSON, affectez l’heure de temps universel coordonné (UTC) actuelle comme valeur de l’élément
startTime
. Définissez la valeur de l’élémentendTime
sur une (1) heure après l’heure UTC actuelle.{ "name": "PerfTWTrigger", "properties": { "type": "TumblingWindowTrigger", "typeProperties": { "frequency": "Minute", "interval": "15", "startTime": "2017-09-08T05:30:00Z", "endTime" : "2017-09-08T06:30:00Z", "delay": "00:00:01", "retryPolicy": { "count": 2, "intervalInSeconds": 30 }, "maxConcurrency": 50 }, "pipeline": { "pipelineReference": { "type": "PipelineReference", "referenceName": "DynamicsToBlobPerfPipeline" }, "parameters": { "windowStart": "@trigger().outputs.windowStartTime", "windowEnd": "@trigger().outputs.windowEndTime" } }, "runtimeState": "Started" } }
Créez un déclencheur avec l’applet de commande Set-AzDataFactoryV2Trigger :
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Vérifiez que l’état du déclencheur est Stopped avec l’applet de commande Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Démarrez le déclencheur avec la cmdlet Start-AzDataFactoryV2Trigger :
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Vérifiez que l’état du déclencheur est Started avec l’applet de commande Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Récupérez les exécutions du déclencheur dans Azure PowerShell avec l’applet de commande Get-AzDataFactoryV2TriggerRun. Pour obtenir plus d’informations sur les exécutions du déclencheur, exécutez la commande suivante régulièrement. Mettez à jour les valeurs
TriggerRunStartedAfter
etTriggerRunStartedBefore
pour qu’elles correspondent à celles de votre définition de déclencheur :Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
Pour effectuer la surveillance des exécutions du déclencheur et du pipeline dans le portail Azure, consultez Surveiller des exécutions de pipelines.