Freigeben über


Erstellen eines Triggers zum Ausführen einer Pipeline gemäß einem Zeitplan

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!

Dieser Artikel enthält Informationen zum Zeitplantrigger und den Schritten zum Erstellen, Starten und Überwachen eines Zeitplantriggers. Informationen zu anderen Triggertypen finden Sie unter Pipelineausführung und -trigger.

Bei der Erstellung eines Plantriggers geben Sie einen Zeitplan wie ein Startdatum, ein Wiederholungsintervall oder ein Enddatum für den Trigger an und ordnen diesem eine Pipeline zu. Pipelines und Trigger haben eine m:m-Beziehung. Mehrere Trigger können eine einzelne Pipeline starten. Ein einzelnder Trigger kann mehrere Pipelines starten.

In den folgenden Abschnitten werden die Schritte zum Erstellen eines Zeitplantriggers durch unterschiedliche Methoden erläutert.

Die Benutzerportale von Azure Data Factory und Azure Synapse

Sie können einen Plantrigger erstellen, um eine regelmäßige Ausführung der Pipeline (z. B. stündlich oder täglich) festzulegen.

Hinweis

Eine vollständige exemplarische Vorgehensweise zum Erstellen einer Pipeline und eines Plantriggers, in der der Trigger der Pipeline zugeordnet sowie die Pipeline ausgeführt und überwacht wird, finden Sie im Schnellstart: Erstellen einer Data Factory über die Azure Data Factory-Benutzeroberfläche.

  1. Wechseln Sie in Data Factory zur Registerkarte Bearbeiten oder in Azure Synapse zur Registerkarte Integrieren.


  1. Klicken Sie im Menü auf Trigger und dann auf Neu/Bearbeiten.

    Screenshot, der das Triggermenü „Neu“ zeigt

  2. Klicken Sie auf der Seite Trigger hinzufügen auf Trigger auswählen und dann auf Neu.

    Screenshot, der den Bereich „Trigger hinzufügen“ zeigt

  3. Auf der Seite Neuer Trigger:

    1. Überprüfen Sie, ob Zeitplan als Typ ausgewählt ist.

    2. Geben Sie als Startdatum den Startzeitpunkt des Triggers an. Dieser Wert ist standardmäßig auf den aktuellen datetime-Wert in UTC (koordinierte Weltzeit) festgelegt.

    3. Geben Sie die Zeitzone an, in der der Trigger erstellt wird. Die Zeitzoneneinstellung gilt für Startdatum, Enddatum und Ausführungszeiten planen unter Erweiterte Wiederholungsoptionen. Durch eine Änderung der Zeitzone wird das Startdatum nicht automatisch geändert. Stellen Sie sicher, dass das Startdatum in der angegebenen Zeitzone korrekt ist. Die Zeitangabe unter Geplante Ausführungszeit des Triggers wird als nach dem Startdatum interpretiert. (Stellen Sie sicher, dass der Startzeitpunkt mindestens 1 Minute früher als die Ausführungszeit ist. Andernfalls wird die Pipeline bei der nächsten Wiederholung ausgelöst.)

      Hinweis

      Bei Zeitzonen mit Umstellung zwischen Sommerzeit und Winterzeit wird die Triggerzeit automatisch zweimal im Jahr angepasst, wenn die Wiederholung auf Tage oder länger festgelegt ist. Um die Anpassung an die Sommer-/Winterzeit zu deaktivieren, wählen Sie eine Zeitzone aus, in der diese Umstellung nicht erfolgt, z. B. UTC.

      Die Anpassung an die Sommer-/Winterzeit erfolgt nur für Trigger, bei denen die Wiederholung auf Tage oder länger festgelegt ist. Wenn der Trigger auf Stunden oder Minuten festgelegt ist, wird er weiterhin in regelmäßigen Abständen ausgelöst.

    4. Legen Sie für den Trigger Wiederholen fest. Wählen Sie einen Wert aus der Dropdownliste aus (Minütlich, Stündlich, Täglich, Wöchentlich und Monatlich). Geben Sie den Multiplikator in das Textfeld ein. Beispiel: Wenn der Trigger einmal alle 15 Minuten ausgeführt werden soll, wählen Sie Minütlich aus, und geben Sie 15 in das Textfeld ein.

    5. Wenn Sie unter Wiederholung die Option Tag(e), Woche(n) oder Monat(e) auswählen, wird Erweiterte Wiederholungsoptionen angezeigt.

      Screenshot der erweiterten Wiederholungsoptionen von „Tag(e)“, „Woche(n)“ und „Monat(e)“

    6. Zum Angeben eines Endzeitpunkts wählen Sie Enddatum angeben aus. Legen Sie einen Wert für Endet am fest, und klicken auf OK.

      Für jede Pipelineausführung fallen Gebühren an. Wenn Sie Tests durchführen, sollten Sie darauf achten, dass die Pipeline nur ein paar Mal ausgelöst wird. Stellen Sie jedoch sicher, dass zwischen Veröffentlichungszeit und Endzeit ausreichend Zeit für die Pipelineausführung bleibt. Der Trigger wird erst nach Veröffentlichung der Lösung wirksam, nicht beim Speichern des Triggers auf der Benutzeroberfläche.

      Screenshot, der die Triggereinstellungen anzeigt

      Screenshot der Triggereinstellungen für den Endzeitpunkt anzeigt

  4. Wählen Sie im Fenster Neuer Trigger für die Option Aktiviert die Schaltfläche Ja und dann OK aus. Über dieses Kontrollkästchen können Sie den Trigger später deaktivieren.

    Screenshot der Option „Aktiviert“

  5. Überprüfen Sie im Fenster Neuer Trigger die Warnmeldung, und wählen Sie OK aus.

    Screenshot, der die Auswahl der Schaltfläche „OK“ zeigt

  6. Klicken Sie auf Alle veröffentlichen, um die Änderungen zu veröffentlichen. Der Trigger startet die Pipelineausführung erst, wenn die Änderungen veröffentlicht wurden.

    Screenshot, der die Schaltfläche „Alle veröffentlichen“ zeigt

  7. Wechseln Sie auf der linken Seite zur Registerkarte Pipelineausführungen, und wählen Sie Aktualisieren aus, um die Liste zu aktualisieren. Sie können die Pipelineausführungen anzeigen, die vom geplanten Trigger ausgelöst werden. Beachten Sie die Werte in der Spalte Ausgelöst durch. Wenn Sie die Option Jetzt auslösen verwenden, wird die manuelle Triggerausführung in der Liste angezeigt.


  1. Wechseln Sie zur Ansicht Triggerausführungen>Zeitplan.


Azure PowerShell

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.

In diesem Abschnitt erfahren Sie, wie Sie mit Azure PowerShell einen Zeitplantrigger erstellen, starten und überwachen. Um zu sehen, wie dieses Beispiel funktioniert, gehen Sie zuerst den Schnellstart: Erstellen einer Data Factory mit Azure PowerShell durch. Fügen Sie anschließend den folgenden Code zur „main“-Methode hinzu, der einen Zeitplantrigger erstellt und startet, der alle 15 Minuten ausgeführt wird. Der Trigger ist einer Pipeline namens Adfv2QuickStartPipeline zugeordnet, die Sie im Rahmen des Schnellstarts erstellen.

Voraussetzungen

Beispielcode

  1. Erstellen Sie im Ordner *C:\ADFv2QuickStartPSH* eine JSON-Datei namens MyTrigger.json und dem folgenden Inhalt:

    Wichtig

    Legen Sie den Wert des startTime-Elements vor dem Speichern der JSON-Datei auf die aktuelle UTC-Zeit fest. Legen Sie den Wert des endTime-Elements auf eine Stunde nach der aktuellen UTC-Zeit fest.

    {
        "properties": {
            "name": "MyTrigger",
            "type": "ScheduleTrigger",
            "typeProperties": {
                "recurrence": {
                    "frequency": "Minute",
                    "interval": 15,
                    "startTime": "2017-12-08T00:00:00Z",
                    "endTime": "2017-12-08T01:00:00Z",
                    "timeZone": "UTC"
                }
            },
            "pipelines": [{
                    "pipelineReference": {
                        "type": "PipelineReference",
                        "referenceName": "Adfv2QuickStartPipeline"
                    },
                    "parameters": {
                        "inputPath": "adftutorial/input",
                        "outputPath": "adftutorial/output"
                    }
                }
            ]
        }
    }
    

    Im JSON-Codeausschnitt:

    • Das type Element des Triggers wird auf ScheduleTrigger festgelegt.

    • Das frequency-Element wird auf Minute festgelegt und das interval-Element auf 15. So führt der Trigger die Pipeline zwischen dem Start- und Endzeitpunkt alle 15 Minuten aus.

    • Das timeZone-Element gibt die Zeitzone an, in der der Trigger erstellt wird. Diese Einstellung gilt sowohl für startTime als auch für endTime.

    • Das endTime-Element ist auf eine Stunde nach dem Wert des startTime-Elements festgelegt. So führt der Trigger die Pipeline 15 Minuten, 30 Minuten und 45 Minuten nach der Startzeit aus. Denken Sie daran, die Startzeit in die aktuelle UTC-Zeit und die Endzeit in eine Stunde nach der Startzeit zu ändern.

      Wichtig

      Für die UTC-Zeitzone müssen startTime und endTime im Format yyyy-MM-ddTHH:mm:ssZ vorliegen. Für andere Zeitzonen müssen startTime und endTime im Format yyyy-MM-ddTHH:mm:ss vorliegen.

      Gemäß der Norm ISO 8601 markiert das Suffix Z des Zeitstempels den datetime-Wert für die Zeitzone UTC und macht das timeZone-Feld damit überflüssig. Wenn das Suffix Z für UTC fehlt, tritt bei der Aktivierung des Triggers ein Fehler auf.

    • Der Trigger ist der Pipeline Adfv2QuickStartPipeline zugeordnet. Um einen Trigger mehreren Pipelines zuzuordnen, fügen Sie weitere pipelineReference-Abschnitte hinzu.

    • Die Pipeline im Schnellstart akzeptiert zwei parameters-Werte: inputPath und outputPath. Sie übergeben Werte für diese Parameter aus dem Trigger.

  2. Erstellen Sie mit dem Cmdlet Set-AzDataFactoryV2Trigger einen Trigger:

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Vergewissern Sie sich, dass der Status des Triggers Beendet lautet, indem Sie das Cmdlet Get-AzDataFactoryV2Trigger verwenden:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Starten Sie den Trigger mithilfe des Cmdlets Start-AzDataFactoryV2Trigger:

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Vergewissern Sie sich, dass der Status des Triggers Gestartet lautet, indem Sie das Cmdlet Get-AzDataFactoryV2Trigger verwenden:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Rufen Sie Triggerausführungen in Azure PowerShell mit dem Cmdlet Get-AzDataFactoryV2TriggerRun ab. Führen Sie in regelmäßigen Abständen den folgenden Befehl aus, um die Informationen zu den Triggerausführungen abzurufen. Aktualisieren Sie die Werte von TriggerRunStartedAfter und TriggerRunStartedBefore entsprechend den Werten in Ihrer Triggerdefinition:

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
    

    Hinweis

    Die Triggerzeit für Plantrigger ist im UTC-Zeitstempel angegeben. TriggerRunStartedAfter und TriggerRunStartedBefore erwarten auch den UTC-Zeitstempel.

    Informationen zum Überwachen von Trigger- bzw. Pipelineausführungen im Azure-Portal finden Sie unter Überwachen der Pipeline.

Azure CLI

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der Azure CLI einen Plantrigger erstellen, starten und überwachen. Um zu sehen, wie dieses Beispiel funktioniert, gehen Sie zuerst den Schnellstart: Erstellen einer Azure Data Factory mit der Azure CLI durch. Führen Sie dann die folgenden Schritte aus, um einen Plantrigger zu erstellen, der alle 15 Minuten ausgeführt wird, und diesen zu starten. Der Trigger ist einer Pipeline namens Adfv2QuickStartPipeline zugeordnet, die Sie im Rahmen des Schnellstarts erstellen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

Beispielcode

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis die JSON-Datei MyTrigger.json mit den Eigenschaften für den Trigger. Verwenden Sie für dieses Beispiel den folgenden Inhalt:

    Wichtig

    Legen Sie den Wert des startTime-Elements vor dem Speichern der JSON-Datei auf die aktuelle UTC-Zeit fest. Legen Sie den Wert des endTime-Elements auf eine Stunde nach der aktuellen UTC-Zeit fest.

    {
        "name": "MyTrigger",
        "type": "ScheduleTrigger",
        "typeProperties": {
            "recurrence": {
                "frequency": "Minute",
                "interval": 15,
                "startTime": "2017-12-08T00:00:00Z",
                "endTime": "2017-12-08T01:00:00Z",
                "timeZone": "UTC"
            }
        },
        "pipelines": [{
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "Adfv2QuickStartPipeline"
                },
                "parameters": {
                    "inputPath": "adftutorial/input",
                    "outputPath": "adftutorial/output"
                }
            }
        ]
    }
    

    Im JSON-Codeausschnitt:

    • Das type Element des Triggers wird auf ScheduleTrigger festgelegt.

    • Das frequency-Element wird auf Minute festgelegt und das interval-Element auf 15. So führt der Trigger die Pipeline zwischen dem Start- und Endzeitpunkt alle 15 Minuten aus.

    • Das timeZone-Element gibt die Zeitzone an, in der der Trigger erstellt wird. Diese Einstellung gilt sowohl für startTime als auch für endTime.

    • Das endTime-Element ist auf eine Stunde nach dem Wert des startTime-Elements festgelegt. So führt der Trigger die Pipeline 15 Minuten, 30 Minuten und 45 Minuten nach der Startzeit aus. Denken Sie daran, die Startzeit in die aktuelle UTC-Zeit und die Endzeit in eine Stunde nach der Startzeit zu ändern.

      Wichtig

      Für die UTC-Zeitzone müssen startTime und „endTime“ im Format yyyy-MM-ddTHH:mm:ssZ vorliegen. Für andere Zeitzonen müssen startTime und endTime im Format yyyy-MM-ddTHH:mm:ss vorliegen.

      Gemäß der Norm ISO 8601 markiert das Suffix Z des Zeitstempels den datetime-Wert für die Zeitzone UTC und macht das timeZone-Feld damit überflüssig. Wenn das Suffix Z für UTC fehlt, tritt bei der Aktivierung des Triggers ein Fehler auf.

    • Der Trigger ist der Pipeline Adfv2QuickStartPipeline zugeordnet. Um einen Trigger mehreren Pipelines zuzuordnen, fügen Sie weitere pipelineReference-Abschnitte hinzu.

    • Die Pipeline im Schnellstart akzeptiert zwei parameters-Werte: inputPath und outputPath. Sie übergeben Werte für diese Parameter aus dem Trigger.

  2. Erstellen Sie einen Trigger mit dem Befehl az datafactory trigger create:

    az datafactory trigger create --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory"  --name "MyTrigger" --properties @MyTrigger.json  
    
  3. Vergewissern Sie sich mithilfe des Befehls az datafactory trigger show, dass der Status des Triggers Beendet lautet:

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  4. Starten Sie den Trigger mit dem Befehl az datafactory trigger start:

    az datafactory trigger start --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  5. Vergewissern Sie sich mithilfe des Befehls az datafactory trigger show, dass der Status des Triggers Gestartet lautet:

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  6. Rufen Sie die Triggerausführungen in der Azure CLI mit dem Befehl az datafactory trigger-run query-by-factory ab. Führen Sie in regelmäßigen Abständen den folgenden Befehl aus, um die Informationen zu den Triggerausführungen abzurufen. Aktualisieren Sie die Werte von last-updated-after und last-updated-before entsprechend den Werten in Ihrer Triggerdefinition:

    az datafactory trigger-run query-by-factory --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --filters operand="TriggerName" operator="Equals" values="MyTrigger" --last-updated-after "2017-12-08T00:00:00" --last-updated-before "2017-12-08T01:00:00"
    

    Hinweis

    Die Triggerzeiten für Plantrigger sind im UTC-Zeitstempel angegeben. last-updated-after und last-updated-before erwarten ebenfalls den UTC-Zeitstempel.

    Informationen zum Überwachen von Trigger- bzw. Pipelineausführungen im Azure-Portal finden Sie unter Überwachen der Pipeline.

.NET SDK

In diesem Abschnitt erfahren Sie, wie Sie mit dem .NET SDK einen Trigger erstellen, starten und überwachen. Um zu sehen, wie dieses Beispiel funktioniert, gehen Sie zuerst den Schnellstart: Erstellen einer Data Factory mit dem .NET-SDK durch. Fügen Sie anschließend den folgenden Code zur „main“-Methode hinzu, der einen Zeitplantrigger erstellt und startet, der alle 15 Minuten ausgeführt wird. Der Trigger ist einer Pipeline namens Adfv2QuickStartPipeline zugeordnet, die Sie im Rahmen des Schnellstarts erstellen.

Um einen Zeitplantrigger zu erstellen und zu starten, der alle 15 Minuten ausgeführt wird, fügen Sie den folgenden Code zur main-Methode hinzu:

            // Create the trigger
            Console.WriteLine("Creating the trigger");

            // Set the start time to the current UTC time
            DateTime startTime = DateTime.UtcNow;

            // Specify values for the inputPath and outputPath parameters
            Dictionary<string, object> pipelineParameters = new Dictionary<string, object>();
            pipelineParameters.Add("inputPath", "adftutorial/input");
            pipelineParameters.Add("outputPath", "adftutorial/output");

            // Create a schedule trigger
            string triggerName = "MyTrigger";
            ScheduleTrigger myTrigger = new ScheduleTrigger()
            {
                Pipelines = new List<TriggerPipelineReference>()
                {
                    // Associate the Adfv2QuickStartPipeline pipeline with the trigger
                    new TriggerPipelineReference()
                    {
                        PipelineReference = new PipelineReference(pipelineName),
                        Parameters = pipelineParameters,
                    }
                },
                Recurrence = new ScheduleTriggerRecurrence()
                {
                    // Set the start time to the current UTC time and the end time to one hour after the start time
                    StartTime = startTime,
                    TimeZone = "UTC",
                    EndTime = startTime.AddHours(1),
                    Frequency = RecurrenceFrequency.Minute,
                    Interval = 15,
                }
            };

            // Now, create the trigger by invoking the CreateOrUpdate method
            TriggerResource triggerResource = new TriggerResource()
            {
                Properties = myTrigger
            };
            client.Triggers.CreateOrUpdate(resourceGroup, dataFactoryName, triggerName, triggerResource);

            // Start the trigger
            Console.WriteLine("Starting the trigger");
            client.Triggers.Start(resourceGroup, dataFactoryName, triggerName);

Zum Erstellen von Triggern in einer anderen Zeitzone als UTC sind folgende Einstellungen erforderlich:

<<ClientInstance>>.SerializationSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
<<ClientInstance>>.SerializationSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;
<<ClientInstance>>.SerializationSettings.DateParseHandling = DateParseHandling.None;
<<ClientInstance>>.DeserializationSettings.DateParseHandling = DateParseHandling.None;
<<ClientInstance>>.DeserializationSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
<<ClientInstance>>.DeserializationSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;

Fügen Sie zum Überwachen einer Triggerausführung im Beispiel den folgenden Code vor der letzten Console.WriteLine-Anweisung hinzu:

            // Check that the trigger runs every 15 minutes
            Console.WriteLine("Trigger runs. You see the output every 15 minutes");

            for (int i = 0; i < 3; i++)
            {
                System.Threading.Thread.Sleep(TimeSpan.FromMinutes(15));
                List<TriggerRun> triggerRuns = client.Triggers.ListRuns(resourceGroup, dataFactoryName, triggerName, DateTime.UtcNow.AddMinutes(-15 * (i + 1)), DateTime.UtcNow.AddMinutes(2)).ToList();
                Console.WriteLine("{0} trigger runs found", triggerRuns.Count);

                foreach (TriggerRun run in triggerRuns)
                {
                    foreach (KeyValuePair<string, string> triggeredPipeline in run.TriggeredPipelines)
                    {
                        PipelineRun triggeredPipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, triggeredPipeline.Value);
                        Console.WriteLine("Pipeline run ID: {0}, Status: {1}", triggeredPipelineRun.RunId, triggeredPipelineRun.Status);
                        List<ActivityRun> runs = client.ActivityRuns.ListByPipelineRun(resourceGroup, dataFactoryName, triggeredPipelineRun.RunId, run.TriggerRunTimestamp.Value, run.TriggerRunTimestamp.Value.AddMinutes(20)).ToList();
                    }
                }
            }

Informationen zum Überwachen von Trigger- bzw. Pipelineausführungen im Azure-Portal finden Sie unter Überwachen der Pipeline.

Python SDK

In diesem Abschnitt erfahren Sie, wie Sie mit dem Python-SDK einen Trigger erstellen, starten und überwachen. Um zu sehen, wie dieses Beispiel funktioniert, gehen Sie zuerst den Schnellstart: Erstellen einer Data Factory mithilfe des Python-SDK durch. Fügen Sie dann im Python-Skript den folgenden Codeblock nach dem Codeblock monitor the pipeline run hinzu. Dieser Code erzeugt einen Zeitplantrigger, der alle 15 Minuten zwischen den angegebenen Start- und Endzeiten ausgeführt wird. Ändern Sie die Variable start_time in die aktuelle UTC-Zeit und die Variable end_time in eine Stunde nach der aktuellen UTC-Zeit.

    # Create a trigger
    tr_name = 'mytrigger'
    scheduler_recurrence = ScheduleTriggerRecurrence(frequency='Minute', interval='15',start_time='2017-12-12T04:00:00Z', end_time='2017-12-12T05:00:00Z', time_zone='UTC')
    pipeline_parameters = {'inputPath':'adftutorial/input', 'outputPath':'adftutorial/output'}
    pipelines_to_run = []
    pipeline_reference = PipelineReference('copyPipeline')
    pipelines_to_run.append(TriggerPipelineReference(pipeline_reference, pipeline_parameters))
    tr_properties = TriggerResource(properties=ScheduleTrigger(description='My scheduler trigger', pipelines = pipelines_to_run, recurrence=scheduler_recurrence))
    adf_client.triggers.create_or_update(rg_name, df_name, tr_name, tr_properties)

    # Start the trigger
    adf_client.triggers.start(rg_name, df_name, tr_name)

Informationen zum Überwachen von Trigger- bzw. Pipelineausführungen im Azure-Portal finden Sie unter Überwachen der Pipeline.

Azure Resource Manager-Vorlage

Sie können mit einer Azure Resource Manager-Vorlage einen Trigger erstellen. Detaillierte Anweisungen finden Sie unter Erstellen einer Azure Data Factory mit einer Azure Resource Manager-Vorlage.

Übergeben der Startzeit des Triggers an eine Pipeline

In Version 1 von Azure Data Factory unterstützt das Lesen oder Schreiben von partitionierten Daten mithilfe der Systemvariablen SliceStart, SliceEnd, WindowStart und WindowEnd. In der aktuellen Version von Azure Data Factory- und Azure Synapse-Pipelines können Sie dieses Verhalten mithilfe eines Pipelineparameters erzielen. Die Startzeit und die geplante Zeit für den Trigger werden als Wert für den Pipelineparameter festgelegt. Im folgenden Beispiel wird die geplante Zeit für den Trigger als Wert an den Pipelineparameter scheduledRunTime übergeben:

"parameters": {
    "scheduledRunTime": "@trigger().scheduledTime"
}

JSON-Schema

Die folgende JSON-Definition zeigt, wie Sie einen Zeitplantrigger mit Planung und Wiederholung erstellen können:

{
  "properties": {
    "type": "ScheduleTrigger",
    "typeProperties": {
      "recurrence": {
        "frequency": <<Minute, Hour, Day, Week, Month>>,
        "interval": <<int>>,             // Optional, specifies how often to fire (default to 1)
        "startTime": <<datetime>>,
        "endTime": <<datetime - optional>>,
        "timeZone": "UTC"
        "schedule": {                    // Optional (advanced scheduling specifics)
          "hours": [<<0-23>>],
          "weekDays": [<<Monday-Sunday>>],
          "minutes": [<<0-59>>],
          "monthDays": [<<1-31>>],
          "monthlyOccurrences": [
               {
                    "day": <<Monday-Sunday>>,
                    "occurrence": <<1-5>>
               }
           ]
        }
      }
    },
   "pipelines": [
            {
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "<Name of your pipeline>"
                },
                "parameters": {
                    "<parameter 1 Name>": {
                        "type": "Expression",
                        "value": "<parameter 1 Value>"
                    },
                    "<parameter 2 Name>" : "<parameter 2 Value>"
                }
           }
      ]
  }
}

Wichtig

Die parameters-Eigenschaft ist eine erforderliche Eigenschaft des pipelines-Elements. Wenn für Ihre Pipeline keine Parameter akzeptiert, müssen Sie eine leere JSON-Definition für die parameters-Eigenschaft einfügen.

Schemaübersicht

Die folgende Tabelle enthält eine allgemeine Übersicht über die wichtigsten Schemaelemente im Zusammenhang mit der Wiederholung und Zeitplanung eines Triggers.

JSON-Eigenschaft Beschreibung
startTime Ein Datums-/Uhrzeitwert. Bei einfachen Zeitplänen gilt der Wert der startTime-Eigenschaft für das erste Auftreten. Bei komplexen Zeitplänen wird der Trigger frühestens beim festgelegten startTime-Wert gestartet.
Für die Zeitzone UTC ist das Format 'yyyy-MM-ddTHH:mm:ssZ'. Für andere Zeitzonen ist das Format yyyy-MM-ddTHH:mm:ss.
endTime Enddatum und -uhrzeit für den Trigger. Der Trigger wird am angegebenen Enddatum und der Enduhrzeit beendet. Der Wert für die Eigenschaft darf nicht in der Vergangenheit liegen. Diese Eigenschaft ist optional.
Für die Zeitzone UTC ist das Format 'yyyy-MM-ddTHH:mm:ssZ'. Für andere Zeitzonen ist das Format yyyy-MM-ddTHH:mm:ss.
timeZone Die Zeitzone, in der der Trigger erstellt wird. Diese Einstellung gilt für startTime, endTime und schedule. Unter folgendem Link finden Sie eine Liste der unterstützten Zeitzonen.
recurrence Ein recurrence-Objekt, das die Wiederholungsregeln für den Trigger angibt. Das „recurrence“-Objekt unterstützt die Elemente frequency, interval, endTime, count und schedule. Wenn ein „recurrence“-Objekt definiert ist, ist das frequency-Element erforderlich. Die anderen Elemente des recurrence-Objekts sind optional.
frequency Die Einheit der Häufigkeit, mit welcher der Trigger wiederholt wird. Die unterstützten Werte sind z. B. minute,, hour,, day, week und month.
interval Eine positive ganze Zahl, die das Intervall des frequency-Werts angibt, der bestimmt, wie oft der Trigger ausgeführt wird. Wenn interval beispielsweise 3 entspricht und frequency gleich week ist, wird der Trigger alle drei Wochen wiederholt.
schedule Der Wiederholungszeitplan für den Trigger. Die Wiederholung eines Triggers mit einem festgelegten frequency-Wert wird auf der Grundlage eines Wiederholungszeitplans ausgeführt. Die schedule-Eigenschaft enthält Anpassungen für die Wiederholung auf der Grundlage von Minuten, Stunden, Wochentagen, Monatstagen und Wochennummern.

Wichtig

Für die UTC-Zeitzone müssen startTime und endTime im Format yyyy-MM-ddTHH:mm:ssZ vorliegen. Für andere Zeitzonen müssen startTime und endTime im Format yyyy-MM-ddTHH:mm:ss vorliegen.

Gemäß der Norm ISO 8601 markiert das Suffix Z des Zeitstempels den datetime-Wert für die Zeitzone UTC und macht das timeZone-Feld damit überflüssig. Wenn das Suffix Z für UTC fehlt, tritt bei der Aktivierung des Triggers ein Fehler auf.

Schemastandards, Einschränkungen und Beispiele

JSON-Eigenschaft type Erforderlich Standardwert Gültige Werte Beispiel
startTime String Ja Keine Datum/Uhrzeit (nach ISO 8601) Für die Zeitzone UTC: "startTime" : "2013-01-09T09:30:00-08:00Z"
Für andere Zeitzonen: "2013-01-09T09:30:00-08:00"
timeZone String Ja Keine Zeitzonenwerte "UTC"
recurrence Objekt Ja Keine Wiederholungsobjekt "recurrence" : { "frequency" : "monthly", "interval" : 1 }
interval Anzahl Nein 1 1 bis 1.000 "interval":10
endTime String Ja Keine Ein Datums-/Uhrzeitwert, der einen Zeitpunkt in der Zukunft darstellt Für die Zeitzone UTC: "endTime" : "2013-02-09T09:30:00-08:00Z"
Für andere Zeitzonen: "endTime" : "2013-02-09T09:30:00-08:00"
schedule Objekt Nein Keine Zeitplanobjekt "schedule" : { "minute" : [30], "hour" : [8,17] }

Zeitzonenoption

Im Folgenden finden Sie einige der für Plantrigger unterstützte Zeitzonen:

Zeitzone UTC-Abweichung (ohne Sommerzeit) timeZone-Wert Umstellung auf Sommerzeit Zeitstempelformat
Koordinierte Weltzeit (UTC) 0 UTC Nein 'yyyy-MM-ddTHH:mm:ssZ'
Pacific Time (PT) -8 Pacific Standard Time Ja 'yyyy-MM-ddTHH:mm:ss'
Central Time (CT) –6 Central Standard Time Ja 'yyyy-MM-ddTHH:mm:ss'
Eastern Time (ET) -5 Eastern Standard Time Ja 'yyyy-MM-ddTHH:mm:ss'
Greenwich Mean Time (GMT) 0 GMT Standard Time Ja 'yyyy-MM-ddTHH:mm:ss'
Mitteleuropäische Zeit +1 W. Europe Standard Time Ja 'yyyy-MM-ddTHH:mm:ss'
India Standard Time (IST) +5:30 India Standard Time Nein 'yyyy-MM-ddTHH:mm:ss'
China Normalzeit +8 China Standard Time Nein 'yyyy-MM-ddTHH:mm:ss'

Diese Liste ist unvollständig. Eine vollständige Liste der Zeitzonenoptionen finden Sie im Portal auf der Seite zur Triggererstellung.

startTime-Eigenschaft

Die folgende Tabelle zeigt, wie die startTime-Eigenschaft eine Triggerausführung steuert:

startTime-Wert Wiederholung ohne Zeitplan Wiederholung mit Zeitplan
Startzeit in der Vergangenheit Berechnet die erste zukünftige Ausführungszeit nach der Startzeit und nimmt die Ausführung zu diesem Zeitpunkt vor.

Berechnet weitere Ausführungen auf Grundlage der letzten Ausführungszeit.

Betrachten Sie das Beispiel nach dieser Tabelle.
Der Trigger startet frühestens zur angegebenen Startzeit. Das erste Vorkommen basiert auf dem Zeitplan, der auf der Grundlage der Startzeit berechnet wird.

Berechnet weitere Ausführungen auf Grundlage des Wiederholungszeitplans.
Startzeit in der Zukunft oder Gegenwart Wird einmalig zur angegebenen Startzeit ausgeführt.

Berechnet weitere Ausführungen auf Grundlage der letzten Ausführungszeit.
Der Trigger startet frühestens zur angegebenen Startzeit. Das erste Vorkommen basiert auf dem Zeitplan, der auf der Grundlage der Startzeit berechnet wird.

Berechnet weitere Ausführungen auf Grundlage des Wiederholungszeitplans.

Das folgende Beispiel veranschaulicht, was passiert, wenn die Startzeit in der Vergangenheit liegt und nur eine Wiederholung, aber kein Zeitplan angegeben ist. Nehmen Sie beispielsweise an, dass die aktuelle Uhrzeit 2017-04-08 13:00 ist, die Startzeit 2017-04-07 14:00 ist und die Wiederholung alle zwei Tage erfolgt. (Der recurrence-Wert wird definiert, indem die frequency-Eigenschaft auf day und die interval-Eigenschaft auf 2 festgelegt wird.) Beachten Sie, dass der startTime-Wert in der Vergangenheit und vor der aktuellen Zeit liegt.

Unter diesen Umständen erfolgt die erste Ausführung am 2017-04-09 um 14:00. Die Scheduler-Engine berechnet die Ausführungen auf Grundlage der Startzeit. In der Vergangenheit liegende Instanzen werden verworfen. Die Engine verwendet die nächste in der Zukunft liegende Instanz. In diesem Szenario ist die Startzeit auf den 2017-04-07 um 2:00pm festgelegt. Die nächste Instanz folgt zwei Tage nach diesem Zeitpunkt, also am 2017-04-09 um 2:00pm.

Die erste Ausführungszeit bleibt dieselbe, selbst wenn der startTime-Wert 2017-04-05 14:00 oder 2017-04-01 14:00 ist. Nach der ersten Ausführung werden nachfolgende Ausführungen anhand des Zeitplans berechnet. Daher erfolgen die weiteren Ausführungen am 2017-04-11 um 2:00pm, dann am 2017-04-13 um 2:00pm, dann am 2017-04-15 um 2:00pm und so weiter.

Wenn im Zeitplan eines Triggers keine Stunden oder Minuten festgelegt sind, wird der Stunden- oder Minutenwert der ersten Ausführung als Standardwert verwendet.

schedule-Eigenschaft

Mithilfe eines Zeitplans lässt sich die Anzahl der Triggerausführungen begrenzen. Beispiel: Wenn für einen Trigger mit einer monatlichen Häufigkeit nur die Ausführung am 31. Tag geplant ist, wird der Trigger nur in Monaten mit 31 Tagen ausgeführt.

Ein Zeitplan kann die Anzahl von Triggerausführungen aber auch erhöhen. Beispiel: Ein Trigger mit einem monatlichen Intervall, dessen Ausführung für die Monatstage 1 und 2 geplant ist, wird an den 1. und 2. Tagen des Monats anstatt einmal im Monat ausgeführt.

Bei Angabe mehrerer schedule-Elemente werden diese in absteigender Reihenfolge der Zeitplaneinstellungen ausgewertet. Die Auswertung beginnt mit der Wochennummer und wird mit dem Monatstag, dem Wochentag, der Stunde und schließlich der Minute fortgesetzt.

Die folgende Tabelle enthält eine ausführliche Beschreibung der schedule-Elemente:

JSON-Element BESCHREIBUNG Gültige Werte
minutes Minuten der Stunde, zu denen der Trigger ausgeführt wird
  • Integer
  • Array mit ganzen Zahlen
hours Stunden des Tages, zu denen der Trigger ausgeführt wird
  • Integer
  • Array mit ganzen Zahlen
weekDays Tage der Woche, an denen der Trigger ausgeführt wird. Der Wert kann nur bei wöchentlicher Häufigkeit angegeben werden.
  • Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
  • Array von Tageswerten (die maximale Arraygröße ist 7)
  • Bei Tageswerten wird nicht zwischen Groß- und Kleinschreibung unterschieden.
monthlyOccurrences Tage des Monats, an denen der Trigger ausgeführt wird. Der Wert kann nur bei monatlicher Häufigkeit angegeben werden.
  • Array von monthlyOccurrences-Objekten: { "day": day, "occurrence": occurrence }
  • Das day-Attribut ist der Wochentag, an dem der Trigger ausgeführt wird. Beispiel: Eine monthlyOccurrences-Eigenschaft mit dem day-Wert {Sunday} bedeutet, dass der Trigger jeden Sonntag im Monat ausgeführt wird. Das day-Attribut ist erforderlich.
  • Das occurrence-Attribut ist das Vorkommen des angegebenen day-Attributs innerhalb des Monats. Beispiel: Eine monthlyOccurrences-Eigenschaft mit den day- und occurrence-Werten {Sunday, -1} bedeutet, dass der Trigger am letzten Sonntag des Monats ausgeführt wird. Das occurrence-Attribut ist optional.
monthDays Tag des Monats, an dem der Trigger ausgeführt wird. Der Wert kann nur bei monatlicher Häufigkeit angegeben werden.
  • Beliebiger Wert, für den Folgendes gilt: <= -1 und >= -31
  • Beliebiger Wert, für den Folgendes gilt: >= 1 und <= 31
  • Array von Werten

Beispiele für Wiederholungszeitpläne von Triggern

Dieser Abschnitt enthält Beispiele für Wiederholungszeitpläne und konzentriert sich dabei auf das schedule-Objekt und die dazugehörigen Elemente.

In den Beispielen wird angenommen, dass der interval-Wert auf 1 festgelegt und der frequency-Wert gemäß der Zeitplandefinition richtig ist. Der frequency-Wert kann z. B. nicht day entsprechen, wenn gleichzeitig eine monthDays-Änderung im schedule-Objekt erfolgt. Solche Einschränkungen werden in der Tabelle im vorhergehenden Abschnitt erwähnt.

Beispiel BESCHREIBUNG
{"hours":[5]} Ausführung täglich um 05:00 Uhr.
{"minutes":[15], "hours":[5]} Ausführung täglich um 05:15 Uhr.
{"minutes":[15], "hours":[5,17]} Ausführung täglich um 05:15 und 17:15 Uhr.
{"minutes":[15,45], "hours":[5,17]} Ausführung täglich um 05:15 Uhr, 05:45 Uhr, 17:15 Uhr und 17:45 Uhr.
{"minutes":[0,15,30,45]} Ausführung alle 15 Minuten.
{hours":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]} Stündliche Ausführung. Dieser Trigger wird stündlich ausgeführt. Die Minuten werden vom startTime-Wert gesteuert, wenn ein Wert angegeben ist. Wenn kein Wert angegeben ist, werden die Minuten von der Erstellungszeit gesteuert. Lautet die Start- oder Erstellungszeit also beispielsweise 12:25 Uhr, wird der Trigger um 00:25 Uhr, 01:25 Uhr, 02:25 Uhr etc. und um 23:25 Uhr ausgeführt.

Dieser Zeitplan entspricht einem Trigger mit einem frequency-Wert von hour, einem interval-Wert von 1 und keinem schedule-Wert. Dieser Zeitplan kann mit anderen frequency- und interval-Werten verwendet werden, um andere Trigger zu erstellen. Beispiel: Wenn der frequency-Wert month entspricht, wird der Zeitplan nur einmal im Monat ausgeführt anstatt wie beim frequency-Wert day jeden Tag.
{"minutes":[0]} Ausführung jeweils zur vollen Stunde. Dieser Trigger wird immer zur vollen Stunde ab 00:00 Uhr (dann 01:00 Uhr, 02:00 Uhr und so weiter) ausgeführt.

Dieser Zeitplan entspricht einem Trigger mit einem frequency-Wert von hour und einem startTime-Wert von null Minuten oder einem Trigger mit keinem schedule-Wert und einem frequency-Wert von day. Wenn der frequency-Wert week oder month ist, wird der Zeitplan nur an einem Tag in der Woche bzw. im Monat ausgeführt.
{"minutes":[15]} Stündliche Ausführung jeweils 15 Minuten nach der vollen Stunde. Dieser Trigger wird stündlich immer 15 Minuten nach der vollen Stunde ab 00:15 Uhr, dann 01:15 Uhr, 02:15 Uhr und so weiter ausgeführt und endet um 23:15 Uhr.
{"hours":[17], "weekDays":["saturday"]} Wöchentliche Ausführung, immer samstags um 17:00 Uhr.
{"hours":[17], "weekDays":["monday", "wednesday", "friday"]} Wöchentliche Ausführung am Montag, Mittwoch und Freitag, jeweils um 17:00 Uhr.
{"minutes":[15,45], "hours":[17], "weekDays":["monday", "wednesday", "friday"]} Wöchentliche Ausführung am Montag, Mittwoch und Freitag, jeweils um 17:15 und 17:45 Uhr.
{"minutes":[0,15,30,45], "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} Ausführung an Wochentagen im 15-Minuten-Takt.
{"minutes":[0,15,30,45], "hours": [9, 10, 11, 12, 13, 14, 15, 16] "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} Ausführung an Wochentagen zwischen 09:00 Uhr und 16:45 Uhr im 15-Minuten-Takt.
{"weekDays":["tuesday", "thursday"]} Ausführung jeweils dienstags und donnerstags zur festgelegten Startzeit.
{"minutes":[0], "hours":[6], "monthDays":[28]} Ausführung um 06:00 Uhr am 28. Tag jedes Monats (Voraussetzung: frequency-Wert entspricht month)
{"minutes":[0], "hours":[6], "monthDays":[-1]} Ausführung um 06:00 Uhr am letzten Tag des Monats. Zur Ausführung eines Triggers am letzten Tag eines Monats verwenden Sie „-1“ anstatt Tag 28, 29, 30 oder 31.
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} Ausführung jeweils am ersten und letzten Tag jedes Monats um 06:00 Uhr.
{monthDays":[1,14]} Ausführung jeweils am ersten und 14. Tag jedes Monats zur festgelegten Startzeit.
{"minutes":[0], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1}]} Ausführung am ersten Freitag jedes Monats um 05:00 Uhr.
{"monthlyOccurrences":[{"day":"friday", "occurrence":1}]} Ausführung am ersten Freitag jedes Monats zur festgelegten Startzeit.
{"monthlyOccurrences":[{"day":"friday", "occurrence":-3}]} Monatliche Ausführung am dritten Freitag ab Monatsende zur festgelegten Startzeit.
{"minutes":[15], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} Ausführung am ersten und letzten Freitag jedes Monats um 05:15 Uhr.
{"monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} Ausführung am ersten und letzten Freitag jedes Monats zur festgelegten Startzeit.
{"monthlyOccurrences":[{"day":"friday", "occurrence":5}]} Ausführung am fünften Freitag jedes Monats zur festgelegten Startzeit. Wenn in einem Monat kein fünfter Freitag vorhanden ist, wird die Pipeline nicht ausgeführt, da die Ausführung ausschließlich für den fünften Freitag geplant ist. Zur Ausführung des Triggers am letzten Freitag des Monats empfiehlt sich u.U. die Verwendung von „-1“ anstelle von „5“ als occurrence-Wert.
{"minutes":[0,15,30,45], "monthlyOccurrences":[{"day":"friday", "occurrence":-1}]} Ausführung im 15-Minuten-Takt am letzten Freitag des Monats.
{"minutes":[15,45], "hours":[5,17], "monthlyOccurrences":[{"day":"wednesday", "occurrence":3}]} Ausführung um 05:15, 05:45, 17:15 und 17:45 Uhr am dritten Mittwoch jedes Monats.