Vytvoření aktivační události, která spustí kanál v přeskakujícím okně
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Tento článek obsahuje postup vytvoření, spuštění a monitorování triggeru pro přeskakující okno. Obecné informace o aktivačních událostech a podporovaných typech najdete v tématu Spouštění kanálů a triggery.
Aktivační události pro přeskakující okno jsou typem aktivačních událostí, které se aktivuje v pravidelných časových intervalech od určeného počátečního okamžiku a které zachovávají stav. Přeskakující okna jsou řada pevných, nepřekryvných a souvislých časových intervalů. Aktivační událost pro přeskakující okno má relaci 1:1 s kanálem a může odkazovat pouze na jeden kanál.
Aktivační událost pro přeskakující okno je pro aktivační událost plánu náročnější alternativou. Nabízí sadu funkcí pro složité scénáře, jako je (závislost na jiných aktivačních událostech pro přeskakující okno, opětovné spuštění neúspěšné úlohy a nastavení opakování uživatelů pro kanály). Další informace o rozdílu mezi aktivační událostí plánu a triggerem přeskakujícího okna najdete v tématu Porovnání typů aktivačních událostí.
Prostředí portálu Azure Data Factory a Azure Synapse
- Pokud chcete vytvořit trigger pro přeskakující okno na webu Azure Portal, vyberte kartu Triggery a pak vyberte Nový.
- Po otevření podokna konfigurace triggeru vyberte přeskakující okno. Pak definujte vlastnosti aktivační události pro přeskakující okno.
- Jakmile budete hotovi, zvolte tlačítko Uložit.
Vlastnosti typu aktivační události pro přeskakující okno
Přeskakující okno má následující vlastnosti typu triggeru:
{
"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"
}
}
}
}
Následující tabulka obsahuje základní přehled hlavních elementů JSON, které souvisejí s opakováním a plánováním triggeru pro přeskakující okno.
Element JSON | Popis | Typ | Povolené hodnoty | Požaduje se |
---|---|---|---|---|
type |
Typ triggeru. Jedná se type o pevnou hodnotu TumblingWindowTrigger . |
String |
TumblingWindowTrigger |
Ano |
runtimeState |
Aktuální stav doby spuštění triggeru. Tento prvek je <readOnly>. |
String |
Started , , Stopped Disabled |
Ano |
frequency |
Řetězec, který představuje jednotku frekvence (minuty, hodiny nebo měsíce), ve které se aktivační událost opakuje. Pokud jsou hodnoty kalendářních startTime dat podrobnější než frequency hodnota, startTime počítají se data při výpočtu hranic okna. Pokud frequency je hourly hodnota a startTime hodnota je 2017-09-01T10:10:10Z, první okno je (2017-09-01T10:10:10Z, 2017-09-09-01T11:10:10Z). |
String |
Minute , , Hour Month |
Ano |
interval |
Kladné celé číslo, které označuje interval pro frequency hodnotu, což určuje, jak často se aktivační událost spouští. Například pokud interval je a 3 frequency je hour , trigger se opakuje každých 3 hodiny. Minimální interval intervalu je 5 minut. |
Integer |
Kladné celé číslo. | Ano |
startTime |
První výskyt, který může být v minulosti. První interval aktivační události je (startTime , startTime + interval ). |
DateTime |
Hodnota DateTime . |
Ano |
endTime |
Poslední výskyt, který může být v minulosti. | DateTime |
Hodnota DateTime . |
Ano |
delay |
Doba zpoždění zahájení zpracování dat pro okno. Spuštění kanálu se spustí po očekávané době spuštění a množství zpoždění. Zpoždění definuje, jak dlouho aktivační událost čeká po termínu splnění před aktivací nového spuštění. Zpoždění nezmění okno startTime . Například delay hodnota 00:10:00 znamená zpoždění 10 minut. |
Timespan (hh:mm:ss) |
Hodnota timespan , ve které je 00:00:00 výchozí hodnota . |
No |
maxConcurrency |
Počet souběžných spuštění triggerů aktivovaných pro okna, která jsou připravená. Pokud například chcete, aby se včerejších 24 oknech spustilo obnovení po hodinách. Pokud maxConcurrency = 10, aktivační události se aktivují pouze pro prvních 10 oken (00:00-01:00 - 09:00-10:00). Po dokončení prvních 10 aktivovaných spuštění kanálu se spustí spuštění triggeru pro další 10 oken (10:00-11:00 – 19:00-20:00). Pokračujeme v tomto příkladu maxConcurrency = 10, pokud je 10 oken připravených, existuje 10 celkových spuštění kanálu. Pokud je připravené jenom jedno okno, spustí se jenom jeden kanál. |
Integer |
Celé číslo mezi 1 a 50. | Ano |
retryPolicy: Count |
Počet opakování před spuštěním kanálu je označen jako Failed . |
Integer |
Celé číslo, ve kterém je výchozí hodnota 0 (bez opakování). | No |
retryPolicy: intervalInSeconds |
Zpoždění mezi opakovanými pokusy zadanými v sekundách. | Integer |
Počet sekund, ve kterém je výchozí hodnota 30. Minimální hodnota je 30 . |
No |
dependsOn: type |
Typ .TumblingWindowTriggerReference Vyžaduje se, pokud je nastavena závislost. |
String |
TumblingWindowTriggerDependencyReference , SelfDependencyTumblingWindowTriggerReference |
No |
dependsOn: size |
Velikost přeskakujícího okna závislostí. | Timespan (hh:mm:ss) |
Kladná timespan hodnota, ve které je výchozí velikost okna podřízeného triggeru. |
No |
dependsOn: offset |
Posun aktivační události závislosti. | Timespan (hh:mm:ss) |
Hodnota timespan , která musí být záporná v samostatné závislosti. Pokud není zadána žádná hodnota, okno je stejné jako samotná aktivační událost. |
Samostatná závislost: Ano Jiné: Ne |
Poznámka:
Po publikování interval
triggeru přeskakujícího okna se hodnoty nedají frequency
upravit.
Systémové proměnné WindowStart a WindowEnd
V definici kanálu můžete použít WindowStart
WindowEnd
systémové proměnné triggeru pro přeskakující okno (to znamená pro část dotazu). Předejte systémové proměnné jako parametry do kanálu v definici triggeru. Následující příklad ukazuje, jak tyto proměnné předat jako parametry.
{
"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'))}"
}
}
}
}
}
WindowStart
WindowEnd
Hodnoty systémových proměnných v definici kanálu použijete MyWindowStart
MyWindowEnd
odpovídajícím způsobem.
Pořadí provádění oken ve scénáři obnovení
Pokud je trigger v minulosti, pak na základě vzorce M=(CurrentTime- TriggerStartTime)/TumblingWindowSize aktivační událost generuje aktivační událost startTime
{M} backfill(past) paralelně, před spuštěním budoucích spuštění provede souběžnost triggeru. Pořadí provádění pro okna je deterministické, od nejstarších po nejnovější intervaly. Toto chování v současné době není možné změnit.
Poznámka:
V tomto scénáři jsou všechna spuštění z vybraného startTime
spuštění spuštěna před spuštěním budoucích spuštění. Pokud potřebujete doplňovat dlouhou dobu, doporučujeme provést počáteční historické zatížení.
Existující elementy TriggerResource
Následující body platí pro aktualizaci existujících TriggerResource
prvků:
- Hodnotu
frequency
prvku (nebo velikosti okna) triggeru spolu sinterval
elementem nelze po vytvoření triggeru změnit. Toto omezení se vyžaduje pro správné fungování opakovanýchtriggerRun
spuštění a vyhodnocení závislostí. - Pokud se hodnota prvku
endTime
triggeru změní (přidáním nebo aktualizací), stav již zpracovaných oken se neobnoví. Trigger respektuje novouendTime
hodnotu. Pokud je nováendTime
hodnota před spuštěným okny, trigger se zastaví. V opačném případě se trigger zastaví, když dojde k novéendTime
hodnotě.
Opakované pokusy přiřazené uživatelem kanálů
V případě selhání kanálu může trigger přeskakujícího okna opakovat spuštění odkazovaného kanálu automaticky pomocí stejných vstupních parametrů bez zásahu uživatele. retryPolicy
K zadání této akce použijte vlastnost v definici triggeru.
Závislost triggeru přeskakujícího okna
Pokud chcete zajistit, aby se trigger přeskakujícího okna spustil až po úspěšném spuštění jiné aktivační události přeskakujícího okna v datové továrně, vytvořte závislost triggeru přeskakujícího okna.
Zrušení spuštění přeskakujícího okna
Spuštění aktivační události pro přeskakující okno můžete zrušit, pokud je konkrétní okno ve stavu Čekání, Čeká se na závislost nebo Spuštěno :
- Pokud je okno ve spuštěném stavu, zrušte přidružené spuštění kanálu a spuštění triggeru se označí jako zrušené.
- Pokud je okno ve stavu Čekání nebo Čekání na závislost , můžete okno zrušit z monitorování.
Můžete také znovu spustit zrušené okno. Opětovné spuštění přebírá nejnovější publikované definice triggeru. Závislosti pro zadané okno se po opětovném spuštění znovu vyhodnotí .
Ukázka pro Azure PowerShell a Azure CLI
V této části se dozvíte, jak pomocí Azure PowerShellu vytvořit, spustit a monitorovat trigger.
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Azure PowerShell: Postupujte podle pokynů v tématu Instalace Azure PowerShellu ve Windows pomocí modulu PowerShellGet.
- Azure Data Factory: Postupujte podle pokynů v tématu Vytvoření služby Azure Data Factory pomocí PowerShellu a vytvořte datovou továrnu a kanál.
Ukázkový kód
Ve složce C:\ADFv2QuickStartPSH\ vytvořte soubor JSON s názvem MyTrigger.json s následujícím obsahem:
Důležité
Před uložením souboru JSON nastavte hodnotu elementu
startTime
na aktuální čas UTC (Coordinated Universal Time). Nastavte hodnotu elementuendTime
na jednu hodinu po aktuálním čase UTC.{ "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" } }
Vytvořte trigger pomocí rutiny Set-AzDataFactoryV2Trigger :
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Pomocí rutiny Get-AzDataFactoryV2Trigger ověřte, že je stav triggeru Zastaveno:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Spusťte trigger pomocí rutiny Start-AzDataFactoryV2Trigger :
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Pomocí rutiny Get-AzDataFactoryV2Trigger ověřte, že je trigger spuštěný:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Spuštění triggeru v Azure PowerShellu získáte pomocí rutiny Get-AzDataFactoryV2TriggerRun . Pokud chcete získat informace o spuštění triggeru, pravidelně spusťte následující příkaz.
TriggerRunStartedAfter
Aktualizujte hodnoty takTriggerRunStartedBefore
, aby odpovídaly hodnotám v definici triggeru:Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
Pokud chcete monitorovat spuštění triggerů a spuštění kanálu na webu Azure Portal, přečtěte si téma Monitorování spuštění kanálu.