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 nepřekrývajících se souvislých časových intervalů s pevnou velikostí. 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 složitější alternativou pro aktivační událost plánu, která nabízí sadu funkcí pro složité scénáře (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živatele pro kanály). Pokud chcete lépe porozumět rozdílu mezi aktivační událostí plánu a aktivační událostí pro přeskakující okno, navštivte prosím toto místo.

Prostředí portálu Azure Data Factory a Synapse

  1. Pokud chcete vytvořit trigger pro přeskakující okno na webu Azure Portal, vyberte kartu Triggery a pak vyberte Nový.
  2. Po otevření podokna konfigurace triggeru vyberte Přeskakující okno a pak definujte vlastnosti aktivační události pro přeskakující okno.
  3. Až 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. Typ je pevná hodnota "TumblingWindowTrigger". String "PřeskakujícíWindowTrigger" Ano
runtimeState Aktuální stav doby spuštění triggeru.
Poznámka: Tento prvek je <readOnly>.
String "Spuštěno", "Zastaveno", "Zakázáno" 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 data startTime podrobnější než hodnota četnosti, při výpočtu hranic oken se považují data startTime. Pokud je například hodnota frekvence hodinová a hodnota startTime je 2017-09-01T10:10:10Z, první okno je (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String "Minute", "Hour", "Month" Ano
interval Kladné celé číslo označující interval pro hodnotu frequency, která určuje, jak často se má aktivační událost spouštět. Pokud je například interval 3 a frekvence je hodina, aktivační událost se opakuje každých 3 hodiny.
Poznámka: Minimální interval intervalu okna je 5 minut.
Celé číslo 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
Zpoždění 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í nemění čas spuštění okna. Například hodnota zpoždění 00:10:00 znamená zpoždění 10 minut. Časový interval
(hh:mm:ss)
Hodnota časového rozsahu, ve které je výchozí hodnota 00:00:00. No
maxConcurrency Počet souběžných spuštění triggerů aktivovaných pro okna, která jsou připravená. Pokud například chcete vrátit hodinové spuštění pro včerejší výsledky ve 24 oknech. 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 připraveno 10 oken, existuje 10 celkových spuštění kanálu. Pokud je připraveno jenom 1 okno, je spuštěný jenom 1 kanál. Celé číslo Celé číslo mezi 1 a 50. Ano
retryPolicy: Count Počet opakování před spuštěním kanálu se označí jako Neúspěšné. Celé číslo 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. Celé číslo 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í. Časový interval
(hh:mm:ss)
Kladná hodnota časového rozsahu, kde výchozí hodnota je velikost okna podřízeného triggeru No
dependsOn: offset Posun aktivační události závislosti. Časový interval
(hh:mm:ss)
Hodnota časového rozsahu, která musí být záporná v samostatné závislosti. Pokud není zadaná žádná hodnota, okno je stejné jako samotná aktivační událost. Samostatná závislost: Ano
Jiné: Ne

Poznámka:

Po publikování triggeru přeskakujícího okna není možné upravit interval a frekvenci .

Systémové proměnné WindowStart a WindowEnd

Systémové proměnné WindowStart a WindowEnd triggeru pro přeskakující okno můžete použít v definici kanálu (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 předat tyto proměnné 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'))}"
                }
            }
        }
    }
}

Pokud chcete v definici kanálu použít hodnoty systémových proměnných WindowStart a WindowEnd , použijte odpovídajícím způsobem parametry MyWindowStart a MyWindowEnd.

Pořadí provádění oken ve scénáři obnovení

Pokud je čas spuštění triggeru v minulosti, pak na základě tohoto vzorce, M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, trigger vygeneruje paralelní spuštění backfillu {M} a před spuštěním budoucích spuštění bude respektovat 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:

Mějte na paměti, že v tomto scénáři budou všechna spuštění z vybraného startTime spuštěna před spuštěním budoucích spuštění. Pokud potřebujete doplňovat dlouhou dobu, doporučuje se provést inciální historické zatížení.

Existující elementy TriggerResource

Následující body platí pro aktualizaci existujících elementů TriggerResource :

  • Hodnotu pro prvek frekvence (nebo velikost okna) triggeru spolu s elementem intervalu nelze po vytvoření triggeru změnit. To se vyžaduje pro správné fungování opětovného spuštění triggeru a vyhodnocení závislostí.
  • Pokud se hodnota elementu endTime triggeru změní (přidáno nebo aktualizováno), stav oken, která jsou již zpracována, se neobnoví . Trigger respektuje novou hodnotu endTime . Pokud je nová hodnota endTime před okny, která jsou již spuštěna, trigger se zastaví. V opačném případě se trigger zastaví, když dojde k nové hodnotě endTime .

Opakované pokusy přiřazené uživatelem kanálů

V případě selhání kanálu může trigger přeskakujícího okna zkusit spustit odkazovaný kanál automaticky pomocí stejných vstupních parametrů bez zásahu uživatele. To lze zadat pomocí vlastnosti "retryPolicy" 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šit spuštění přeskakujícího okna

Spuštění triggeru přeskakujícího okna můžete zrušit, pokud je konkrétní okno ve stavu Čekání, Čekání na závislost nebo Spuštěno .

  • Pokud je okno ve stavu Spuštění , 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řevezme nejnovější publikované definice triggeru a po opětovném spuštění se znovu vyhodnotí závislosti pro zadané okno.

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

Ukázka kódu

  1. 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. Nastavte hodnotu elementu endTime na jednu hodinu za aktuální čas 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"
      }
    }
    
  2. Vytvořte trigger pomocí rutiny Set-AzDataFactoryV2Trigger :

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Pomocí rutiny Get-AzDataFactoryV2Trigger ověřte, že je stav triggeru Zastaveno:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Spusťte trigger pomocí rutiny Start-AzDataFactoryV2Trigger :

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Pomocí rutiny Get-AzDataFactoryV2Trigger ověřte, že je trigger spuštěný:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. 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. Aktualizujte hodnoty TriggerRunStartedAfter a TriggerRunStartedBefore tak, 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.