Delen via


Een trigger maken die een pijplijn uitvoert op een tumblingvenster

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Dit artikel bevat stappen voor het maken, starten en bewaken van een tumblingvenstertrigger. Zie Pijplijnuitvoering en triggers voor algemene informatie over triggers en de ondersteunde typen.

Tumblingvenstertriggers zijn triggers die vanaf een opgegeven begintijd worden geactiveerd met een periodiek tijdsinterval en die hun status behouden. Tumblingvensters bestaan uit een reeks niet-overlappende en aaneengesloten tijdsintervallen van vaste duur. Een tumblingvenstertrigger heeft een een-op-een-relatie met een pijplijn en kan alleen verwijzen naar een enkelvoudige pijplijn. Tumblingvenstertrigger is een zwaarder alternatief voor schematriggers die een reeks functies bieden voor complexe scenario's (afhankelijk van andere tumblingvenstertriggers, het opnieuw uitvoeren van een mislukte taak en het opnieuw proberen van gebruikers voor pijplijnen instellen). Als u meer wilt weten over het verschil tussen de schematrigger en de tumblingvenstertrigger, gaat u hier naartoe.

Ervaring van Azure Data Factory en Synapse-portal

  1. Als u een tumblingvenstertrigger wilt maken in Azure Portal, selecteert u het tabblad Triggers en selecteert u Vervolgens Nieuw.
  2. Nadat het deelvenster triggerconfiguratie is geopend, selecteert u Tumblingvenster en definieert u vervolgens de eigenschappen van de trigger van het tumblingvenster.
  3. Selecteer Opslaan als u klaar bent.

Eigenschappen van tumblingvenstertriggertype

Een tumblingvenster heeft de volgende eigenschappen van het triggertype:

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

De volgende tabel bevat een algemeen overzicht van de belangrijkste JSON-elementen die betrekking hebben op het terugkeerpatroon en de planning van een tumblingvenstertrigger:

JSON-element Beschrijving Type Toegestane waarden Vereist
type Het type trigger. Het type is de vaste waarde 'TumblingWindowTrigger'. String "TumblingWindowTrigger" Ja
runtimeState De huidige status van de uitvoeringstijd van de trigger.
Opmerking: dit element is <readOnly>.
String "Gestart", "Gestopt", "Uitgeschakeld" Ja
frequency Een tekenreeks die de frequentie-eenheid (minuten, uren of maanden) aangeeft waarop de trigger terugkeert. Als de begintijddatumwaarden gedetailleerder zijn dan de frequentiewaarde , worden de begintijddatums overwogen wanneer de venstergrenzen worden berekend. Als de frequentiewaarde bijvoorbeeld elk uur is en de waarde startTime 2017-09-01T10:10:10Z is, is het eerste venster (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String "Minuut", "Uur", "Maand" Ja
interval Een positief geheel getal dat het interval voor de waarde frequency aangeeft. Het bepaalt hoe vaak de trigger wordt uitgevoerd. Als het interval bijvoorbeeld 3 is en de frequentie 'uur' is, wordt de trigger elke 3 uur herhaald.
Opmerking: het minimale vensterinterval is 5 minuten.
Geheel getal Een positief geheel getal. Ja
startTime De eerste gebeurtenis, die zich in het verleden kan voordoen. Het eerste triggerinterval is (startTime, startTime-interval + ). Datum en tijd Een datum/tijd-waarde. Ja
endTime De laatste gebeurtenis, die zich in het verleden kan voordoen. Datum en tijd Een datum/tijd-waarde. Ja
Vertraging De hoeveelheid tijd die nodig is om het begin van de gegevensverwerking voor het venster te vertragen. De pijplijnuitvoering wordt gestart na de verwachte uitvoeringstijd plus de hoeveelheid vertraging. De vertraging bepaalt hoe lang de trigger wacht na de einddatum voordat een nieuwe uitvoering wordt geactiveerd. De vertraging verandert de startTime van het venster niet. Een vertragingswaarde van 00:10:00 impliceert bijvoorbeeld een vertraging van 10 minuten. Periode
(uu:mm:ss)
Een tijdsperiodewaarde waarbij de standaardwaarde 00:00:00 is. Nee
maxConcurrency Het aantal gelijktijdige triggeruitvoeringen die worden geactiveerd voor vensters die gereed zijn. Als u bijvoorbeeld de uitvoeringen per uur wilt terugvullen voor gisteren, resulteert dit in 24 vensters. Als maxConcurrency = 10, worden triggergebeurtenissen alleen geactiveerd voor de eerste 10 vensters (00:00-01:00 - 09:00-10:00). Nadat de eerste tien geactiveerde pijplijnuitvoeringen zijn voltooid, worden triggeruitvoeringen geactiveerd voor de volgende 10 vensters (10:00-11:00 - 19:00-20:00). Als u doorgaat met dit voorbeeld van maxConcurrency = 10, als er 10 vensters gereed zijn, zijn er 10 totale pijplijnuitvoeringen. Als er slechts één venster gereed is, is er slechts één pijplijnuitvoering. Geheel getal Een geheel getal tussen 1 en 50. Ja
retryPolicy: Aantal Het aantal nieuwe pogingen voordat de pijplijnuitvoering is gemarkeerd als 'Mislukt'. Geheel getal Een geheel getal, waarbij de standaardwaarde 0 is (geen nieuwe pogingen). Nee
retryPolicy: intervalInSeconds De vertraging tussen nieuwe pogingen die zijn opgegeven in seconden. Geheel getal Het aantal seconden, waarbij de standaardwaarde 30 is. De minimumwaarde is 30. Nee
dependsOn: type Het type TumblingWindowTriggerReference. Vereist als een afhankelijkheid is ingesteld. String "TumblingWindowTriggerDependencyReference", "SelfDependencyTumblingWindowTriggerReference" Nee
dependsOn: grootte De grootte van het tumblingvenster voor afhankelijkheden. Periode
(uu:mm:ss)
Een positieve tijdspannewaarde waarbij de standaardwaarde de venstergrootte van de onderliggende trigger is Nee
dependsOn: offset De verschuiving van de afhankelijkheidstrigger. Periode
(uu:mm:ss)
Een tijdspannewaarde die negatief moet zijn in een zelfafhankelijkheid. Als er geen waarde is opgegeven, is het venster hetzelfde als de trigger zelf. Zelfafhankelijkheid: Ja
Overige: Nee

Notitie

Nadat een tumblingvenstertrigger is gepubliceerd, kunnen interval en frequentie niet worden bewerkt.

WindowsStart- en WindowEnd-systeemvariabelen

U kunt de systeemvariabelen WindowStart en WindowEnd van de tumblingvenstertrigger in uw pijplijndefinitie gebruiken (dat wil wel voor een deel van een query). Geef de systeemvariabelen door als parameters aan uw pijplijn in de triggerdefinitie . In het volgende voorbeeld ziet u hoe u deze variabelen als parameters doorgeeft:

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

Als u de waarden van de systeemvariabele WindowStart en WindowEnd in de pijplijndefinitie wilt gebruiken, gebruikt u de parameters 'MyWindowStart' en 'MyWindowEnd', dienovereenkomstig.

Uitvoeringsvolgorde van vensters in een backfill-scenario

Als de startTime van de trigger zich in het verleden bevindt, worden op basis van deze formule M=(CurrentTime- TriggerStartTime)/TumblingWindowSize {M} backfill(verleden) parallel gegenereerd, waarbij de trigger gelijktijdigheid van triggers nakomt voordat de toekomstige uitvoeringen worden uitgevoerd. De uitvoeringsvolgorde voor Windows is deterministisch, van oudste tot nieuwste intervallen. Dit gedrag kan op dit moment niet worden aangepast.

Notitie

Houd er rekening mee dat in dit scenario alle uitvoeringen van de geselecteerde startTime worden uitgevoerd voordat toekomstige uitvoeringen worden uitgevoerd. Als u een lange periode wilt invullen, wordt aanbevolen om een intiële historische belasting uit te voeren.

Bestaande TriggerResource-elementen

De volgende punten zijn van toepassing op het bijwerken van bestaande TriggerResource-elementen :

  • De waarde voor het frequentieelement (of de venstergrootte) van de trigger, samen met het intervalelement , kan niet worden gewijzigd zodra de trigger is gemaakt. Dit is vereist voor een goede werking van triggerRun-heruitvoeringen en afhankelijkheidsevaluaties
  • Als de waarde voor het endTime-element van de trigger verandert (toegevoegd of bijgewerkt), wordt de status van de vensters die al zijn verwerkt, niet opnieuw ingesteld. De trigger eert de nieuwe endTime-waarde . Als de nieuwe endTime-waarde valt vóór de vensters die al worden uitgevoerd, stopt de trigger. Anders stopt de trigger wanneer de nieuwe endTime-waarde wordt aangetroffen.

Door de gebruiker toegewezen nieuwe pogingen van pijplijnen

In het geval van pijplijnfouten kan de tumblingvenstertrigger de uitvoering van de pijplijn automatisch opnieuw proberen, met behulp van dezelfde invoerparameters, zonder tussenkomst van de gebruiker. Dit kan worden opgegeven met behulp van de eigenschap 'retryPolicy' in de triggerdefinitie.

Afhankelijkheid van tumblingvenstertrigger

Als u ervoor wilt zorgen dat een tumblingvenstertrigger pas wordt uitgevoerd nadat een andere tumblingvenstertrigger in de data factory is uitgevoerd, maakt u een tumblingvenstertriggerafhankelijkheid.

Tumblingvensteruitvoering annuleren

U kunt uitvoeringen annuleren voor een tumblingvenstertrigger, als het specifieke venster de status Wachten, Wachten op Afhankelijkheid of Actief heeft

  • Als het venster de status Actief heeft, annuleert u de bijbehorende pijplijnuitvoering en wordt de triggeruitvoering gemarkeerd als Geannuleerd daarna
  • Als het venster de status Wachten of Wachten op afhankelijkheid heeft, kunt u het venster annuleren vanuit Bewaking:

U kunt ook een geannuleerd venster opnieuw uitvoeren. De nieuwe uitvoering neemt de meest recente gepubliceerde definities van de trigger en afhankelijkheden voor het opgegeven venster worden opnieuw geëvalueerd bij opnieuw uitvoeren

Voorbeeld voor Azure PowerShell en Azure CLI

In deze sectie wordt beschreven hoe u Azure PowerShell gebruikt om een trigger te maken, te starten en te bewaken.

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Vereisten

Voorbeeldcode

  1. Maak een JSON-bestand met de naam MyTrigger.json in de map C:\ADFv2QuickStartPSH\ met de volgende inhoud:

    Belangrijk

    Voordat u het JSON-bestand opslaat, stelt u de waarde van het startTime-element in op de huidige UTC-tijd. Stel de waarde van het endTime-element in op één uur voorbij de huidige UTC-tijd.

    {
      "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. Maak een trigger met behulp van de cmdlet Set-AzDataFactoryV2Trigger :

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Controleer of de status van de trigger is gestopt met behulp van de cmdlet Get-AzDataFactoryV2Trigger :

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Start de trigger met behulp van de cmdlet Start-AzDataFactoryV2Trigger :

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Controleer of de status van de trigger is gestart met behulp van de cmdlet Get-AzDataFactoryV2Trigger :

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Haal de triggeruitvoeringen op in Azure PowerShell met behulp van de cmdlet Get-AzDataFactoryV2TriggerRun . Voer regelmatig de volgende opdracht uit om informatie over de triggeruitvoeringen op te halen. Werk de waarden TriggerRunStartedAfter en TriggerRunStartedBefore bij zodat deze overeenkomen met de waarden in de triggerdefinitie:

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

Zie Pijplijnuitvoeringen bewaken om triggeruitvoeringen en pijplijnuitvoeringen in Azure Portal te bewaken.