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 zijn een reeks vaste, niet-overlappings- en aaneengesloten tijdsintervallen. Een tumblingvenstertrigger heeft een een-op-een-relatie met een pijplijn en kan alleen verwijzen naar een enkelvoudige pijplijn.

Een tumblingvenstertrigger is een zwaarder alternatief voor een schematrigger. Het biedt een reeks functies voor complexe scenario's, zoals (afhankelijk van andere tumblingvenstertriggers, het opnieuw uitvoeren van een mislukte taak en het instellen van gebruikerspogingen voor pijplijnen). Zie Vergelijking van triggertypen voor triggers voor meer informatie over het verschil tussen een schematrigger en een tumblingvenstertrigger.

Ervaring met Azure Data Factory en Azure 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 het Tumblingvenster. Definieer vervolgens de eigenschappen van de tumblingvenstertrigger.
  3. Wanneer u klaar bent, selecteert u Opslaan.

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. De type waarde is de vaste waarde TumblingWindowTrigger. String TumblingWindowTrigger Ja
runtimeState De huidige status van de uitvoeringstijd van de trigger.
Dit element is <readOnly>.
String Started, , StoppedDisabled Ja
frequency Een tekenreeks die de frequentie-eenheid (minuten, uren of maanden) aangeeft waarop de trigger terugkeert. Als de startTime datumwaarden gedetailleerder zijn dan de frequency waarde, worden de startTime datums overwogen wanneer de venstergrenzen worden berekend. Als de frequency waarde bijvoorbeeld is hourly en de startTime waarde 2017-09-01T10:10:10Z is, is het eerste venster (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String Minute, , HourMonth Ja
interval Een positief geheel getal dat het interval voor de frequency waarde aangeeft, waarmee wordt bepaald hoe vaak de trigger wordt uitgevoerd. Als de interval is 3 en de frequency is hour, wordt de trigger bijvoorbeeld elke 3 uur herhaald.
Het minimale vensterinterval is 5 minuten.
Integer Een positief geheel getal. Ja
startTime De eerste gebeurtenis, die zich in het verleden kan voordoen. Het eerste triggerinterval is (startTime, startTime + interval). DateTime Een DateTime waarde. Ja
endTime De laatste gebeurtenis, die zich in het verleden kan voordoen. DateTime Een DateTime waarde. Ja
delay 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 het venster startTimeniet. Een waarde van 00:10:00 betekent bijvoorbeeld delay een vertraging van 10 minuten. Timespan
(uu:mm:ss)
Een timespan waarde waarbij de standaardwaarde is 00:00:00. Nee
maxConcurrency Het aantal gelijktijdige triggeruitvoeringen die worden geactiveerd voor vensters die gereed zijn. Als u bijvoorbeeld elk uur een backfill wilt uitvoeren 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 verdergaat met dit voorbeeld van maxConcurrency = 10, als er 10 vensters gereed zijn, zijn er 10 totale pijplijnuitvoeringen. Als slechts één venster gereed is, wordt slechts één pijplijn uitgevoerd. Integer Een geheel getal tussen 1 en 50. Ja
retryPolicy: Count Het aantal nieuwe pogingen voordat de pijplijnuitvoering wordt gemarkeerd als Failed. Integer Een geheel getal, waarbij de standaardwaarde 0 is (geen nieuwe pogingen). Nee
retryPolicy: intervalInSeconds De vertraging tussen nieuwe pogingen die zijn opgegeven in seconden. Integer 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: size De grootte van het tumblingvenster voor afhankelijkheden. Timespan
(uu:mm:ss)
Een positieve timespan waarde waarbij de standaardwaarde de venstergrootte van de onderliggende trigger is. Nee
dependsOn: offset De verschuiving van de afhankelijkheidstrigger. Timespan
(uu:mm:ss)
Een timespan waarde 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 de interval waarden frequency niet worden bewerkt.

WindowsStart- en WindowEnd-systeemvariabelen

U kunt de WindowStart en WindowEnd systeemvariabelen van de tumblingvenstertrigger in uw pijplijndefinitie gebruiken (dat wil bijvoorbeeld 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 WindowStart en WindowEnd systeemvariabele in de pijplijndefinitie wilt gebruiken, gebruikt u uw MyWindowStart parameters MyWindowEnd dienovereenkomstig.

Uitvoeringsvolgorde van vensters in een backfill-scenario

Als de trigger startTime zich in het verleden bevindt, wordt op basis van de formule M=(CurrentTime- TriggerStartTime)/TumblingWindowSize {M} backfill(verleden) parallel gegenereerd, waarbij de gelijktijdigheid van triggers wordt uitgevoerd 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

In dit scenario worden alle uitvoeringen van de geselecteerde startTime uitgevoerd voordat toekomstige uitvoeringen worden uitgevoerd. Als u een lange periode wilt invullen, raden we u aan een eerste 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 frequency element (of de venstergrootte) van de trigger samen met het interval element kan niet worden gewijzigd nadat de trigger is gemaakt. Deze beperking is vereist voor een goede werking van triggerRun opnieuw uitvoeren en afhankelijkheidsevaluaties.
  • Als de waarde voor het endTime element van de trigger verandert (door toe te voegen of bij te werken), 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 zich bevindt 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 een tumblingvenstertrigger de uitvoering van de pijplijn waarnaar wordt verwezen automatisch opnieuw proberen met behulp van dezelfde invoerparameters, zonder tussenkomst van de gebruiker. Gebruik de retryPolicy eigenschap in de triggerdefinitie om deze actie op te geven.

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.

Een 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 later gemarkeerd als Geannuleerd .
  • 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 gebruikt de meest recente gepubliceerde definities van de trigger. Afhankelijkheden voor het opgegeven venster worden opnieuw geëvalueerd bij opnieuw uitvoeren.

Voorbeeld voor Azure PowerShell en de 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 (Coordinated Universal Time). 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 TriggerRunStartedAfter waarden bij TriggerRunStartedBefore 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.