Sdílet prostřednictvím


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

  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. Pak definujte vlastnosti aktivační události pro přeskakující okno.
  3. 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, , StoppedDisabled 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, , HourMonth 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:00vý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 s interval elementem nelze po vytvoření triggeru změnit. Toto omezení se vyžaduje pro správné fungování opakovaných triggerRun 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 novou endTime 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

Ukázkový kód

  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 (Coordinated Universal Time). Nastavte hodnotu elementu endTime 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"
      }
    }
    
  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. 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.