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
- Als u een tumblingvenstertrigger wilt maken in Azure Portal, selecteert u het tabblad Triggers en selecteert u Vervolgens Nieuw.
- Nadat het deelvenster triggerconfiguratie is geopend, selecteert u het Tumblingvenster. Definieer vervolgens de eigenschappen van de tumblingvenstertrigger.
- 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 , , Stopped Disabled |
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 , , Hour Month |
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 startTime niet. 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 hetinterval
element kan niet worden gewijzigd nadat de trigger is gemaakt. Deze beperking is vereist voor een goede werking vantriggerRun
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 nieuweendTime
waarde. Als de nieuweendTime
waarde zich bevindt vóór de vensters die al worden uitgevoerd, stopt de trigger. Anders stopt de trigger wanneer de nieuweendTime
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
- Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
- Azure PowerShell: volg de instructies in Azure PowerShell installeren in Windows met PowerShellGet.
- Azure Data Factory: volg de instructies in Een Azure Data Factory maken met behulp van PowerShell om een data factory en een pijplijn te maken.
Voorbeeldcode
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 hetendTime
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" } }
Maak een trigger met behulp van de cmdlet Set-AzDataFactoryV2Trigger :
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Controleer of de status van de trigger is gestopt met behulp van de cmdlet Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Start de trigger met behulp van de cmdlet Start-AzDataFactoryV2Trigger :
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Controleer of de status van de trigger is gestart met behulp van de cmdlet Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
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 bijTriggerRunStartedBefore
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.