Delen via


Een trigger creëren die een pijplijn uitvoert op een schuivend tijdvenster

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Aanbeveling

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 geeft stappen voor het maken, starten en bewaken van een tumbling-venstertrigger. Zie Pijplijnuitvoering en triggers voor algemene informatie over triggers en de ondersteunde typen.

Triggers met een schuifvenster zijn triggers die vanaf een opgegeven begintijd op regelmatige tijdsintervallen worden geactiveerd, terwijl ze hun status behouden. Tumblingvensters zijn een reeks aaneensluitende tijdsintervallen van vaste grootte die niet overlappen. Een tumbling-venstertrigger heeft een een-op-een-relatie met een pijplijn en kan alleen verwijzen naar één enkele pijplijn.

Een Tumblingvenster-trigger is een meer complexe alternatief voor een schematrigger. Het biedt een reeks functies voor complexe scenario's, zoals (afhankelijkheid van andere tumblingvenstertriggers, het opnieuw uitvoeren van een mislukte taak en het instellen van gebruikersherhalingen voor pijplijnen). Zie Vergelijking van triggertypen voor meer informatie over het verschil tussen een schematrigger en een tumbling windows-trigger.

Ervaring met Azure Data Factory en Azure Synapse Portal

  1. Als u een tumblingvenstertrigger wilt maken in de Azure portal, selecteert u het tabblad Triggers en selecteert u vervolgens Nieuw.
  2. Nadat het deelvenster triggerconfiguratie is geopend, selecteert u Tumbling Window. Definieer vervolgens de eigenschappen van de tumbling-venstertrigger.
  3. Wanneer u klaar bent, selecteert u Opslaan.

Eigenschappen van het tumbling venster trigger-type

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 geeft een globaal overzicht van de belangrijkste JSON-elementen die verband houden met het schema en de planning van een trigger voor een schuivend venster.

JSON-element Beschrijving Soort Toegestane waarden Vereist
type Het type van de trigger. De type waarde is de vaste waarde TumblingWindowTrigger. String TumblingWindowTrigger Ja
runtimeState Huidige looptijdstatus van de trigger.
Dit element is <alleen-lezen>.
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 verstreken tijd voordat een nieuwe taak wordt gestart. 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 triggers dat wordt geactiveerd voor vensters die gereed zijn. Als u bijvoorbeeld elk uur een backfill wilt uitvoeren voor gisteren, leidt dit tot 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 gestart voor de volgende tien tijdvensters (10:00-11:00 - 19:00-20:00). Voortbordurend op dit voorbeeld van maxConcurrency = 10, als er 10 vensters gereed zijn, zijn er 10 pijpleidingruns in totaal. Als slechts één venster klaar 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 herhaalde pogingen die in seconden wordt opgegeven. 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 afhankelijkheids-tumblingvenster. Timespan
(uu:mm:ss)
Een positieve timespan waarde waarbij de standaardwaarde de venstergrootte van de kind-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 waarden interval en frequency niet worden bewerkt.

WindowsStart- en WindowEnd-systeemvariabelen

U kunt de WindowStart en WindowEnd systeemvariabelen van de tumblingvenstertrigger in uw pijplijndefinitie gebruiken (dat wil zeggen, 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, genereert het op basis van de formule M=(CurrentTime- TriggerStartTime)/TumblingWindowSize {M} backfill (verleden) runs parallel, waarbij rekening wordt gehouden met de gelijktijdigheid van triggers, voordat de toekomstige runs 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 aanvullen, raden we u aan een eerste historische lading te doen.

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 de correcte werking van heruitvoeringen 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 tumbling window-triggermechanisme de uitvoering van de pijplijn waarnaar wordt verwezen automatisch opnieuw proberen met behulp van dezelfde invoerparameters, zonder dat de gebruiker hoeft in te grijpen. Gebruik de retryPolicy eigenschap in de triggerdefinitie om deze actie op te geven.

Afhankelijkheid van trigger voor tuimelvenster

Als u ervoor wilt zorgen dat een tumblingvenstertrigger pas wordt uitgevoerd na de succesvolle uitvoering van een andere in de gegevensfabriek, maakt u een afhankelijkheid voor tumblingvenstertriggers.

Een uitvoering van een tumblingvenster annuleren

U kunt runs annuleren voor een tumblingvenstertrigger als het specifieke venster in de status Wachten, Wachten op afhankelijkheid of Actief is.

  • Als het venster de status Running heeft, annuleert u de bijbehorende Pipeline Run, waarna de triggeruitvoering als Geannuleerd wordt gemarkeerd.
  • 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. Gebruik de cmdlet Get-AzDataFactoryV2TriggerRun om triggeruitvoeringen in Azure PowerShell op te halen. Voer regelmatig de volgende opdracht uit om informatie over de triggeruitvoeringen op te halen. Werk de waarden van TriggerRunStartedAfter en TriggerRunStartedBefore bij zodat ze overeenkomen met de waarden in uw triggerdefinitie.

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

Zie Pijplijnuitvoeringen bewaken voor het monitoren van triggeruitvoeringen en pijplijnuitvoeringen in de Azure-portal.