Skapa en utlösare som kör en pipeline på ett rullande fönster
GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics
Den här artikeln innehåller steg för att skapa, starta och övervaka en utlösare för rullande fönster. Allmän information om utlösare och typer som stöds finns i Pipelinekörning och utlösare.
Utlösare för rullande fönster är en typ av utlösare som går igång med jämna tidsintervall från en angiven starttid och behåller sitt tillstånd. Rullande fönster är en serie sammanhängande tidsintervall med fast storlek som inte överlappar. En utlösare för rullande fönster har en en-till-en-relation med en pipeline och kan bara referera till en enskild pipeline. Utlösare för rullande fönster är ett mer tungt alternativ för schemautlösare som erbjuder en uppsättning funktioner för komplexa scenarier (beroende av andra utlösare för rullande fönster, omkörning av ett misslyckat jobb och ange användarförsök för pipelines). Mer information om skillnaden mellan schemautlösare och utlösare för rullande fönster finns här.
Azure Data Factory- och Synapse-portalen
- Om du vill skapa en utlösare för rullande fönster i Azure Portal väljer du fliken Utlösare och väljer sedan Nytt.
- När konfigurationsfönstret för utlösaren öppnas väljer du Rullande fönster och definierar sedan egenskaperna för utlösaren för rullande fönster.
- När du är klar väljer du Spara.
Egenskaper för utlösartyp för rullande fönster
Ett rullande fönster har följande egenskaper för utlösartyp:
{
"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"
}
}
}
}
Följande tabell innehåller en översikt på hög nivå över de viktigaste JSON-elementen som är relaterade till upprepning och schemaläggning av en utlösare för rullande fönster:
JSON-element | Beskrivning | Typ | Tillåtna värden | Obligatorisk |
---|---|---|---|---|
Typ | Typen av utlösare. Typen är det fasta värdet "TumblingWindowTrigger". | Sträng | "TumblingWindowTrigger" | Ja |
runtimeState | Det aktuella tillståndet för utlösarens körningstid. Obs! Det här elementet är <readOnly>. |
Sträng | "Started", "Stopped", "Disabled" | Ja |
Frekvens | En sträng som representerar frekvensenheten (minuter, timmar eller månader) där utlösaren återkommer. Om startTime-datumvärdena är mer detaljerade än frekvensvärdet beaktas startTime-datumen när fönstergränserna beräknas. Om frekvensvärdet till exempel är varje timme och startTime-värdet är 2017-09-01T10:10:10Z är det första fönstret (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). | Sträng | "Minute", "Hour", "Month" | Ja |
Intervall | Ett positivt heltal som anger intervallet för värdet för frequency och som avgör hur ofta utlösaren körs. Om intervallet till exempel är 3 och frekvensen är "timme" återkommer utlösaren var tredje timme. Obs! Minsta intervall för fönster är 5 minuter. |
Integer | Ett positivt heltal. | Ja |
Starttime | Den första förekomsten, som kan vara tidigare. Det första utlösarintervallet är (startTime, startTime-intervall + ). | DateTime | Ett DateTime-värde. | Ja |
Endtime | Den sista förekomsten, som kan vara i det förflutna. | DateTime | Ett DateTime-värde. | Ja |
Försening | Hur lång tid det kan ta att fördröja databearbetningens start för fönstret. Pipelinekörningen startas efter den förväntade körningstiden plus fördröjningen. Fördröjningen definierar hur länge utlösaren väntar efter den förfallna tiden innan en ny körning utlöses. Fördröjningen ändrar inte fönstret startTime. Ett fördröjningsvärde på 00:10:00 innebär till exempel en fördröjning på 10 minuter. | Tidsintervall (hh:mm:ss) |
Ett tidsintervallvärde där standardvärdet är 00:00:00. | Inga |
maxConcurrency | Antalet samtidiga utlösarkörningar som utlöses för fönster som är klara. Om du till exempel vill fylla i timkörningar för igår resulterar det i 24 fönster. Om maxConcurrency = 10 utlöses utlösarhändelser endast för de första 10 fönstren (00:00-01:00 – 09:00-10:00). När de första 10 utlösta pipelinekörningarna har slutförts utlöses utlösarkörningar för de kommande 10 fönstren (10:00–11:00 –19:00–20:00). Om du fortsätter med det här exemplet med maxConcurrency = 10, finns det 10 totala pipelinekörningar om det finns 10 fönster klara. Om det bara finns ett fönster klart finns det bara 1 pipelinekörning. | Integer | Ett heltal mellan 1 och 50. | Ja |
retryPolicy: Count | Antalet återförsök innan pipelinekörningen markeras som "Misslyckades". | Integer | Ett heltal, där standardvärdet är 0 (inga återförsök). | Inga |
retryPolicy: intervalInSeconds | Fördröjningen mellan återförsök som anges i sekunder. | Integer | Antalet sekunder, där standardvärdet är 30. Det minsta värdet är 30. | Inga |
dependsOn: typ | Typ av TumblingWindowTriggerReference. Krävs om ett beroende har angetts. | Sträng | "TumblingWindowTriggerDependencyReference", "SelfDependencyTumblingWindowTriggerReference" | Inga |
dependsOn: storlek | Storleken på beroendets rullande fönster. | Tidsintervall (hh:mm:ss) |
Ett positivt tidsintervallvärde där standardvärdet är fönsterstorleken för den underordnade utlösaren | Inga |
dependsOn: offset | Förskjutningen av beroendeutlösaren. | Tidsintervall (hh:mm:ss) |
Ett tidsintervallvärde som måste vara negativt i ett självberoende. Om inget värde anges är fönstret samma som själva utlösaren. | Självberoende: Ja Annat: Nej |
Anteckning
När en utlösare för rullande fönster har publicerats kan intervall och frekvens inte redigeras.
Systemvariabler för WindowStart och WindowEnd
Du kan använda systemvariablerna WindowStart och WindowEnd för utlösaren för rullande fönster i pipelinedefinitionen (det vill: för en del av en fråga). Skicka systemvariablerna som parametrar till din pipeline i utlösardefinitionen . I följande exempel visas hur du skickar dessa variabler som parametrar:
{
"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'))}"
}
}
}
}
}
Om du vill använda värdena för systemvariabeln WindowStart och WindowEnd i pipelinedefinitionen använder du parametrarna "MyWindowStart" och "MyWindowEnd".
Körningsordning för fönster i ett scenario med återfyllnad
Om startTime för utlösaren är i det förflutna, sedan baserat på den här formeln, M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, genererar utlösaren {M} återfyllnad (tidigare) körs parallellt och respekterar utlösarens samtidighet innan framtida körningar körs. Körningsordningen för windows är deterministisk, från äldsta till senaste intervall. Det här beteendet kan för närvarande inte ändras.
Befintliga TriggerResource-element
Följande punkter gäller för uppdatering av befintliga TriggerResource-element :
- Värdet för frekvenselementet (eller fönsterstorleken) för utlösaren tillsammans med intervallelementet kan inte ändras när utlösaren har skapats. Detta krävs för att utlösaren ska fungera korrektKör omkörningar och beroendeutvärderingar
- Om värdet för endTime-elementet i utlösaren ändras (läggs till eller uppdateras) återställs inte tillståndet för de fönster som redan har bearbetats. Utlösaren respekterar det nya endTime-värdet . Om det nya endTime-värdet är före de fönster som redan körs stoppas utlösaren. Annars stoppas utlösaren när det nya endTime-värdet påträffas.
Användartilldelade återförsök av pipelines
Vid pipelinefel kan utlösare för rullande fönster försöka köra den refererade pipelinen automatiskt igen med samma indataparametrar utan att användaren behöver göra något. Detta kan anges med egenskapen "retryPolicy" i utlösardefinitionen.
Utlösarberoende för rullande fönster
Om du vill se till att en utlösare för rullande fönster körs först efter att en annan utlösare för rullande fönster har körts i datafabriken skapar du ett beroende för utlösaren för rullande fönster.
Avbryt körning av rullande fönster
Du kan avbryta körningar för en utlösare för rullande fönster, om det specifika fönstret är i vänteläge, väntar på beroende eller körs
- Om fönstret är i körläge avbryter du den associerade pipelinekörningen och utlösarkörningen markeras som Avbrytd efteråt
- Om fönstret är i vänteläge eller väntar på beroendetillstånd kan du avbryta fönstret från Övervakning:
Du kan också köra ett avbrutet fönster igen. Omkörningen tar de senaste publicerade definitionerna av utlösaren och beroenden för det angivna fönstret utvärderas på nytt vid omkörning
Exempel för Azure PowerShell och Azure CLI
Det här avsnittet visar hur du använder Azure PowerShell för att skapa, starta och övervaka en utlösare.
Anteckning
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Förutsättningar
Azure-prenumeration. Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Azure PowerShell. Följ anvisningarna i Installera Azure PowerShell i Windows med PowerShellGet.
Azure Data Factory. Följ anvisningarna i Skapa en Azure Data Factory med PowerShell för att skapa en datafabrik och en pipeline.
Exempelkod
Skapa en JSON-fil med namnet MyTrigger.json i mappen C:\ADFv2QuickStartPSH\ med följande innehåll:
Viktigt
Innan du sparar JSON-filen anger du värdet för startTime-elementet till aktuell UTC-tid. Ange värdet för endTime-elementet till en timme efter den aktuella UTC-tiden.
{ "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" } }
Skapa en utlösare med hjälp av cmdleten Set-AzDataFactoryV2Trigger :
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Bekräfta att statusen för utlösaren har stoppats med hjälp av cmdleten Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Starta utlösaren med hjälp av cmdleten Start-AzDataFactoryV2Trigger :
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Bekräfta att statusen för utlösaren är Startad med cmdleten Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Hämta utlösaren körs i Azure PowerShell med cmdleten Get-AzDataFactoryV2TriggerRun. Kör följande kommando med jämna mellanrum för att få information om utlösarkörningarna. Uppdatera värdena TriggerRunStartedAfter och TriggerRunStartedBefore så att de matchar värdena i utlösardefinitionen:
Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
Information om hur du övervakar utlösarkörningar och pipelinekörningar i Azure Portal finns i Övervaka pipelinekörningar.
Nästa steg
- Detaljerad information om utlösare finns i Pipelinekörning och utlösare.
- Skapa ett beroende för utlösare för rullande fönster.
- Läs mer om hur du refererar till utlösarmetadata i pipelinen i Referensutlösarmetadata i pipelinekörningar