Partager via


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

  1. Pour créer un déclencheur de fenêtre bascule dans le portail Azure, sélectionnez l’onglet Déclencheurs, puis Nouveau.
  2. 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.
  3. 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ément interval ne peuvent pas être modifiées une fois le déclencheur créé. Cette restriction est nécessaire pour le bon fonctionnement des réexécutions triggerRun 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 valeur endTime. Si la nouvelle valeur endTime 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 valeur endTime 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

Exemple de code

  1. 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ément endTime 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"
      }
    }
    
  2. 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"
    
  3. 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"
    
  4. Démarrez le déclencheur avec la cmdlet Start-AzDataFactoryV2Trigger :

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. 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"
    
  6. 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 et TriggerRunStartedBefore 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.