Creare un trigger per l'esecuzione di una pipeline in una finestra a cascata

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo descrive la procedura per creare, avviare e monitorare un trigger di finestra a cascata. Per informazioni generali sui trigger e i tipi supportati, vedere Esecuzione e trigger di pipeline.

I trigger di finestra a cascata vengono attivati in base a un intervallo di tempo periodico a partire da un'ora di inizio specificata, mantenendo al tempo stesso lo stato. Le finestre a cascata sono costituite da una serie di intervalli temporali di dimensioni fisse, contigui e non sovrapposti. Un trigger di finestra a cascata ha una relazione uno a uno con una pipeline e può fare riferimento solo a una singola pipeline. Il trigger di finestra a cascata è un'alternativa più pesante per il trigger di pianificazione che offre una suite di funzionalità per scenari complessi(dipendenza da altri trigger di finestra a cascata, riesecuzione di un processo non riuscito e impostazione dei tentativi utente per le pipeline). Per comprendere ulteriormente la differenza tra trigger di pianificazione e trigger finestra a cascata, visitare qui.

Esperienza del portale di Azure Data Factory e Synapse

  1. Per creare un trigger di finestra a cascata nella portale di Azure, selezionare la scheda Trigger e quindi selezionare Nuovo.
  2. Dopo aver aperto il riquadro di configurazione del trigger, selezionare Finestra a cascata e quindi definire le proprietà del trigger della finestra a cascata.
  3. Al termine, seleziona Salva.

Proprietà del tipo di trigger di finestra a cascata

Una finestra a cascata ha le proprietà del tipo di trigger seguenti:

{
    "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"
            }
        }
    }
}

La tabella seguente fornisce una panoramica generale degli elementi JSON principali correlati alla ricorrenza e alla pianificazione di un trigger di finestra a cascata:

Elemento JSON Descrizione Tipo Valori consentiti Richiesto
type Tipo di trigger. Il tipo è il valore fisso "TumblingWindowTrigger". String "TumblingWindowTrigger"
runtimeState Stato attuale del runtime del trigger.
Nota: questo elemento è <readOnly>.
String "Started", "Stopped", "Disabled"
frequenza Stringa che rappresenta l'unità di frequenza (minuti, ore o mesi) in cui si ripete il trigger. Se i valori di data di startTime sono più granulari del valore di frequency, le date di startTime sono considerate quando vengono calcolati i limiti della finestra. Ad esempio, se il valore di frequency è ogni ora e il valore di startTime è 2017-09-01T10:10:10Z, la prima finestra è (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String "Minute", "Hour", "Month"
interval Numero intero positivo indicante l'intervallo per il valore frequency, che determina la frequenza con cui viene eseguito il trigger. Se, ad esempio, interval è 3 e frequency è "hour", il trigger si ripete ogni 3 ore.
Nota: l'intervallo di finestra minimo è di 5 minuti.
Intero Numero intero positivo.
startTime Prima occorrenza, che può essere nel passato. Il primo intervallo di trigger è (startTime, startTime + interval). Data/Ora Valore DateTime.
endTime Ultima occorrenza, che può essere nel passato. Data/Ora Valore DateTime.
delay Periodo di tempo in base a cui ritardare l'avvio dell'elaborazione dei dati per la finestra. L'esecuzione della pipeline viene avviata dopo il tempo di esecuzione previsto più il periodo di ritardo. Il valore delay definisce per quanto tempo il trigger rimane in attesa dopo la scadenza prima di attivare una nuova esecuzione. Il valore delay non modifica il valore startTime della finestra. Ad esempio, un valore di delay pari a 00:10:00 implica un ritardo di 10 minuti. TimeSpan
(hh:mm:ss)
Valore di un intervallo di tempo il cui il valore predefinito è 00:00:00. No
maxConcurrency Il numero di esecuzioni di trigger simultanee che vengono generate per le finestre che sono pronte. Ad esempio, per recuperare le informazioni relative alle esecuzioni ogni ora per i risultati del giorno prima in 24 finestre. Se maxConcurrency = 10, gli eventi di attivazione vengono generati solo per le prime 10 finestre (00:00-01:00 - 09:00-10:00). Al termine delle prime 10 esecuzioni di pipeline attivate, le esecuzioni di trigger vengono generate per le 10 finestre successive (10:00-11:00 - 19:00-20:00). Continuando con questo esempio di maxConcurrency = 10, se sono pronte 10 finestre, ci sono 10 esecuzioni di pipeline totali. Se c'è solo una finestra pronta, è disponibile solo un'esecuzione di pipeline. Intero Numero intero compreso tra 1 e 50.
retryPolicy: Count Numero di tentativi prima che l'esecuzione della pipeline venga contrassegnata come "Non riuscita". Intero Numero intero, in cui il valore predefinito è 0 (nessun tentativo). No
retryPolicy: intervalInSeconds Ritardo tra i tentativi di ripetizione specificato in secondi. Intero Numero di secondi, in cui il valore predefinito è 30. Il valore minimo è 30. No
dependsOn: tipo Tipo di TumblingWindowTriggerReference. Obbligatorio se è impostata una dipendenza. String "TumblingWindowTriggerDependencyReference", "SelfDependencyTumblingWindowTriggerReference" No
dependsOn: dimensioni Dimensione della finestra a cascata delle dipendenze. TimeSpan
(hh:mm:ss)
Valore intervallo di tempo positivo in cui il valore predefinito è la dimensione della finestra del trigger figlio No
dependsOn: offset Offset del trigger di dipendenza. TimeSpan
(hh:mm:ss)
Valore timespan che deve essere negativo in una dipendenza automatica. Se non viene specificato alcun valore, la finestra corrisponde al trigger stesso. Dipendenza automatica: Sì
Altro: No

Nota

Dopo la pubblicazione di un trigger di finestra a cascata, non è possibile modificare l'intervallo e la frequenza .

Variabili di sistema WindowStart e WindowEnd

È possibile usare le variabili di sistema WindowStart e WindowEnd del trigger di finestra a cascata nella definizione della pipeline (ovvero per una parte di una query). Passare le variabili di sistema come parametri alla pipeline nella definizione del trigger. L'esempio seguente mostra come passare tali variabili come parametri:

{
    "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'))}"
                }
            }
        }
    }
}

Per usare i valori delle variabili di sistema WindowStart e WindowEnd nella definizione della pipeline, usare i parametri "MyWindowStart" e "MyWindowEnd" di conseguenza.

Ordine di esecuzione delle finestre in uno scenario di recupero delle informazioni

Se il trigger startTime è passato, in base a questa formula, M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, il trigger genererà {M} backfill(past) viene eseguito in parallelo, rispettando la concorrenza dei trigger, prima di eseguire le esecuzioni future. L'ordine di esecuzione per le finestre è deterministico, dal meno recente agli intervalli più recenti. Attualmente non è possibile modificare questo comportamento.

Nota

Tenere presente che in questo scenario, tutte le esecuzioni dall'oggetto startTime selezionato verranno eseguite prima dell'esecuzione di esecuzioni future. Se è necessario eseguire il backfill di un lungo periodo di tempo, è consigliabile eseguire un carico cronologico intial.

Elementi TriggerResource esistenti

I punti seguenti si applicano all'aggiornamento degli elementi TriggerResource esistenti:

  • Il valore dell'elemento frequency (o della dimensione della finestra) del trigger insieme all'elemento interval non può essere modificato dopo la creazione del trigger. Questa operazione è necessaria per il corretto funzionamento di triggerRun reruns and dependency valutazioni
  • Se il valore per l'elemento endTime del trigger viene modificato (aggiunto o aggiornato), lo stato delle finestre che sono già elaborate non viene reimpostato. Il trigger rispetta il nuovo valore endTime. Se il nuovo valore endTime è precedente alle finestre già eseguite, il trigger si interrompe. In caso contrario, il trigger si interrompe quando viene rilevato il nuovo valore endTime.

Tentativi assegnati dall'utente delle pipeline

In caso di errori della pipeline, il trigger di finestra a cascata può ritentare l'esecuzione della pipeline di riferimento automaticamente, usando gli stessi parametri di input, senza l'intervento dell'utente. Questa opzione può essere specificata usando la proprietà "retryPolicy" nella definizione del trigger.

Dipendenza del trigger di finestra a cascata

Se si vuole assicurarsi che un trigger di finestra a cascata venga eseguito solo dopo l'esecuzione corretta di un altro trigger di finestra a cascata nella data factory, creare una dipendenza di trigger di finestra a cascata.

Annullare l'esecuzione della finestra a cascata

È possibile annullare le esecuzioni per un trigger di finestra a cascata, se la finestra specifica è in In attesa, In attesa di dipendenza o In esecuzione

  • Se la finestra è in stato In esecuzione, annullare l'esecuzione della pipeline associata e l'esecuzione del trigger verrà contrassegnata come Annullata in seguito
  • Se la finestra è in attesa o in attesa dello stato dipendenza, è possibile annullare la finestra da Monitoraggio:

È anche possibile rieseguire una finestra annullata. La riesecuzione accetta le definizioni pubblicate più recenti del trigger e le dipendenze per la finestra specificata verranno rivalutate al momento della riesecuzione

Esempio per Azure PowerShell e l'interfaccia della riga di comando di Azure

Questa sezione illustra come usare Azure PowerShell per creare, avviare e monitorare un trigger.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Prerequisiti

Codice di esempio

  1. Creare un file JSON denominato MyTrigger.json nella cartella C:\ADFv2QuickStartPSH con il contenuto seguente:

    Importante

    Prima di salvare il file JSON, impostare il valore dell'elemento startTime sull'ora UTC corrente. Impostare il valore dell'elemento endTime su un'ora dopo l'ora UTC corrente.

    {
      "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. Creare un trigger usando il cmdlet Set-AzDataFactoryV2Trigger :

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Verificare che lo stato del trigger sia Stopped usando il cmdlet Get-AzDataFactoryV2Trigger :

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Avviare il trigger usando il cmdlet Start-AzDataFactoryV2Trigger :

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Verificare che lo stato del trigger sia Avviato usando il cmdlet Get-AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Ottenere l'esecuzione del trigger in Azure PowerShell usando il cmdlet Get-AzDataFactoryV2TriggerRun . Per ottenere informazioni sulle esecuzioni di trigger, eseguire periodicamente il comando seguente. Aggiornare i valori di TriggerRunStartedAfter e TriggerRunStartedBefore in modo che corrispondano a quelli nella definizione del trigger:

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

Per monitorare le esecuzioni di trigger e pipeline nel portale di Azure, vedere Monitorare le esecuzioni di pipeline.