Átfedésmentes ablakban folyamatot futtató trigger létrehozása
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Ez a cikk lépéseket tartalmaz a bukóablak-eseményindítók létrehozásához, elindításához és monitorozásához. Az eseményindítókkal és a támogatott típusokkal kapcsolatos általános információkért lásd a folyamat végrehajtását és az eseményindítókat.
Az átfedésmentes ablakos eseményindítók olyan eseményindítók, amelyek rendszeres időközönként aktiválódnak a megadott kezdési időponttól kezdve, az állapot megőrzése mellett. A bukóablakok rögzített méretű, nem visszacsatolt és egybefüggő időintervallumok sorozatát képezik. A ugróablak-eseményindítók egy-az-egyhez kapcsolatban vannak egy folyamattal, és csak egyes folyamatokra hivatkozhatnak.
A bukóablak-eseményindító egy nehezebb alternatíva az ütemezési eseményindítókhoz. Olyan összetett forgatókönyvekhez kínál funkciókat, mint például a (más bukóablak-eseményindítóktól való függőség, egy sikertelen feladat újrafuttatása és a felhasználók újrapróbálkozásának beállítása a folyamatokhoz). Az ütemezési eseményindító és a bukóablak-eseményindító közötti különbség további megértéséhez tekintse meg az eseményindító típusának összehasonlítását.
Az Azure Data Factory és az Azure Synapse portál felülete
- Ha átfedésmentes ablak eseményindítót szeretne létrehozni az Azure Portalon, válassza az Eseményindítók lapot, majd az Új lehetőséget.
- Miután megnyílik az eseményindító konfigurációs panelje, válassza a Átfedés ablak lehetőséget. Ezután adja meg a átfedésmentes ablak eseményindító tulajdonságait.
- Ha végzett, válassza a Mentés lehetőséget.
Átfedésmentes ablak eseményindítótípus-tulajdonságai
A bukóablakok a következő eseményindító-típustulajdonságokat rendelkeznek:
{
"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"
}
}
}
}
Az alábbi táblázat magas szintű áttekintést nyújt azokról a főbb JSON-elemekről, amelyek a bukóablak-eseményindítók ismétlődésével és ütemezésével kapcsolatosak.
JSON-elem | Leírás | Típus | Megengedett értékek | Kötelező |
---|---|---|---|---|
type |
Az eseményindító típusa. Ez type a rögzített érték TumblingWindowTrigger . |
String |
TumblingWindowTrigger |
Igen |
runtimeState |
Az eseményindító futási idejének aktuális állapota. Ez az elem írásvédett<.> |
String |
Started , , Stopped Disabled |
Igen |
frequency |
Egy sztring, amely azt a frekvenciaegységet (perc, óra vagy hónap) jelöli, amelyen az eseményindító ismétlődik. Ha a startTime dátumértékek részletesebbek az frequency értéknél, a startTime dátumok az ablakhatárok kiszámításakor lesznek figyelembe véve. Ha például az frequency érték hourly startTime 2017-09-01T10:10:10Z, az első ablak (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). |
String |
Minute , , Hour Month |
Igen |
interval |
Pozitív egész szám, amely az frequency érték intervallumát jelöli, amely meghatározza az eseményindító futási gyakoriságát. Ha például az interval és 3 az frequency is hour , az eseményindító 3 óránként ismétlődik. Az ablak minimális időköze 5 perc. |
Integer |
Pozitív egész szám. | Igen |
startTime |
Az első előfordulás, amely a múltban lehet. Az első eseményindító időköze (startTime , startTime + interval ). |
DateTime |
Egy DateTime érték. |
Igen |
endTime |
Az utolsó előfordulás, amely a múltban lehet. | DateTime |
Egy DateTime érték. |
Igen |
delay |
Az ablak adatfeldolgozásának megkezdését késleltető idő. A folyamatfuttatás a várt végrehajtási idő és a késés mértéke után indul el. A késés határozza meg, hogy az eseményindító mennyi ideig várakozik az esedékes időnél, mielőtt új futtatást indítanának. A késés nem módosítja az ablakot startTime . A 00:10:00 érték például delay 10 perces késést jelent. |
Timespan (óó:mm:ss) |
Az timespan az érték, amelyben az alapértelmezett érték van 00:00:00 . |
Nem |
maxConcurrency |
Az egyidejű eseményindító-futtatások száma, amelyeket a kész ablakok aktiválnak. Ha például a tegnapi óránkénti futtatások utánpótlása 24 ablakot eredményez. Ha maxConcurrency = 10, az eseményindító események csak az első 10 ablaknál aktiválódnak (00:00-01:00 - 09:00-10:00). Az első 10 aktivált folyamatfuttatás befejezése után a rendszer aktiválja az eseményindító-futtatásokat a következő 10 ablakban (10:00-11:00 - 19:00-20:00). Az = 10 példával maxConcurrency folytatva, ha 10 ablak áll készen, akkor összesen 10 folyamat fut. Ha csak egy ablak áll készen, csak egy folyamat fut. |
Integer |
1 és 50 közötti egész szám. | Igen |
retryPolicy: Count |
A folyamat futtatása előtti újrapróbálkozási próbálkozások száma a következőképpen van megjelölve Failed : . |
Integer |
Egész szám, ahol az alapértelmezett érték 0 (nincs újrapróbálkozás). | Nem |
retryPolicy: intervalInSeconds |
A másodpercben megadott újrapróbálkozási kísérletek közötti késleltetés. | Integer |
A másodpercek száma, ahol az alapértelmezett érték 30. A minimális érték az 30 . |
Nem |
dependsOn: type |
A típus.TumblingWindowTriggerReference Függőség beállítása esetén kötelező. |
String |
TumblingWindowTriggerDependencyReference , SelfDependencyTumblingWindowTriggerReference |
Nem |
dependsOn: size |
A függőségi átfedési ablak mérete. | Timespan (óó:mm:ss) |
timespan Pozitív érték, ahol az alapértelmezett érték a gyermek trigger ablakmérete. |
Nem |
dependsOn: offset |
A függőségi eseményindító eltolása. | Timespan (óó:mm:ss) |
Olyan timespan érték, amely negatív lehet egy önfüggőségben. Ha nincs megadva érték, az ablak ugyanaz, mint maga az eseményindító. |
Önfüggőség: Igen Egyéb: Nem |
Feljegyzés
A bukóablak-eseményindító közzététele után az interval
értékek nem frequency
szerkeszthetők.
WindowsStart és WindowEnd rendszerváltozók
A WindowStart
folyamatdefinícióban (vagyis egy lekérdezés egy részének) használhatja az átfedésmentes ablak eseményindítójának és WindowEnd
rendszerváltozóit. Adja át a rendszerváltozókat paraméterként a folyamatnak az eseményindító definíciójában. Az alábbi példa bemutatja, hogyan adhatja át ezeket a változókat paraméterekként.
{
"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'))}"
}
}
}
}
}
A folyamatdefiníció és a WindowStart
WindowEnd
rendszerváltozó értékeinek használatához ennek megfelelően használja az Ön MyWindowStart
és MyWindowEnd
a paramétereket.
Az ablakok végrehajtási sorrendje egy backfill forgatókönyvben
Ha az eseményindító startTime
a múltban van, akkor az M=(CurrentTime- TriggerStartTime)/TumblingWindowSize képlet alapján az eseményindító {M} backfill(múltbeli) futtatást hoz létre párhuzamosan, tiszteletben tartva az eseményindító egyidejűségét a jövőbeli futtatások végrehajtása előtt. Az ablakok végrehajtási sorrendje determinisztikus, a legrégebbitől a legújabb intervallumig. Ez a viselkedés jelenleg nem módosítható.
Feljegyzés
Ebben a forgatókönyvben a rendszer a kiválasztott startTime
összes futtatást futtatja a jövőbeli futtatások végrehajtása előtt. Ha hosszú ideig kell visszatöltést végeznie, javasoljuk, hogy egy kezdeti előzménybetöltést végez.
Meglévő TriggerResource-elemek
A meglévő TriggerResource
elemek frissítésére a következő pontok vonatkoznak:
- Az eseményindító elemének (vagy ablakméretének) és az elemnek az
interval
értékefrequency
nem módosítható az eseményindító létrehozása után. Ez a korlátozás az újrafuttatások és a függőségitriggerRun
értékelések megfelelő működéséhez szükséges. - Ha az
endTime
eseményindító elemének értéke megváltozik (hozzáadással vagy frissítéssel), a már feldolgozott ablakok állapota nem lesz visszaállítva. Az eseményindító tiszteletben tartja az újendTime
értéket. Ha az újendTime
érték a már végrehajtott ablakok előtt van, az eseményindító leáll. Ellenkező esetben az eseményindító leáll az újendTime
érték észlelésekor.
Folyamatok felhasználó által hozzárendelt újrapróbálkozásai
Folyamathibák esetén a átfedésmentes ablak eseményindítója automatikusan újrapróbálhatja a hivatkozott folyamat végrehajtását ugyanazokkal a bemeneti paraméterekkel, felhasználói beavatkozás nélkül. A művelet megadásához használja az retryPolicy
eseményindító definíciójának tulajdonságát.
Átfedésmentes ablak eseményindító függősége
Ha meg szeretné győződni arról, hogy a bukóablak-eseményindító csak egy másik, az adat-előállítóban lévő átfedésmentes ablak eseményindítójának sikeres végrehajtása után lesz végrehajtva, hozzon létre egy átfedésmentes ablak eseményindító függőségét.
Átfedésmentes ablak futtatásának megszakítása
Ha az adott ablak várakozási, függőségi várakozási vagy futó állapotban van, megszakíthatja a futóablak-eseményindító futását:
- Ha az ablak Futó állapotban van, szakítsa meg a társított folyamatfuttatást, és az eseményindító futtatása később Mégse állapotúként lesz megjelölve.
- Ha az ablak függőségi állapotban van, megszakíthatja az ablakot a Figyelés szolgáltatásból.
Megszakított ablakot is újrafuttathat. Az újrafuttatás az eseményindító legújabb közzétett definícióit használja. A megadott ablak függőségei újraértékelésre kerülnek az újrafuttatásakor.
Minta az Azure PowerShellhez és az Azure CLI-hez
Ez a szakasz bemutatja, hogyan hozhat létre, indíthat és figyelhet eseményindítókat az Azure PowerShell használatával.
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Előfeltételek
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- Azure PowerShell: Kövesse az Azure PowerShell windowsos telepítése a PowerShellGet használatával című témakör utasításait.
- Azure Data Factory: Kövesse az Azure Data Factory létrehozása című témakör utasításait a PowerShell használatával egy adat-előállító és egy folyamat létrehozásához.
Mintakód
Hozzon létre egy MyTrigger.json nevű JSON-fájlt a C:\ADFv2QuickStartPSH\ mappában a következő tartalommal:
Fontos
A JSON-fájl mentése előtt állítsa be az
startTime
elem értékét az aktuális egyezményes világidőre (UTC). Állítsa az elem értékét egyendTime
órával az aktuális UTC-időnél hosszabbra.{ "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" } }
Eseményindító létrehozása a Set-AzDataFactoryV2Trigger parancsmaggal:
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Ellenőrizze, hogy az eseményindító állapota le van-e állítva a Get-AzDataFactoryV2Trigger parancsmag használatával:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Indítsa el az eseményindítót a Start-AzDataFactoryV2Trigger parancsmaggal:
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Győződjön meg arról, hogy az eseményindító állapota a Get-AzDataFactoryV2Trigger parancsmaggal indul el:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
A Get-AzDataFactoryV2TriggerRun parancsmaggal lekérheti az eseményindító-futtatásokat az Azure PowerShellben. Az eseményindító futtatásával kapcsolatos információk lekéréséhez rendszeresen hajtsa végre a következő parancsot. Frissítse az és az
TriggerRunStartedAfter
TriggerRunStartedBefore
értékeket az eseményindító definíciójában szereplő értékeknek megfelelően:Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
Az eseményindító-futtatások és a folyamatfuttatások az Azure Portalon való figyeléséhez tekintse meg a folyamatfuttatások monitorozását.