Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
VZTAHUJE SE NA:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.
Podmíněné cesty
Azure Data Factory a také orchestrace kanálů Synapse umožňují podmíněnou logiku a umožňují uživateli zvolit jinou cestu na základě výsledků z předchozí aktivity. Použití různých cest umožňuje uživatelům vytvářet robustní kanály a začlenit zpracování chyb do logiky ETL/ELT. Celkem povolujeme čtyři podmíněné cesty,
| Name | Explanation |
|---|---|
| Po úspěchu | Tuto cestu spusťte (výchozí průchod), pokud byla aktuální aktivita úspěšná. |
| Při selhání | Tuto cestu spusťte, pokud aktuální aktivita selhala. |
| Po dokončení | Tuto cestu spusťte po dokončení aktuální aktivity bez ohledu na to, jestli byla úspěšná nebo ne. |
| Při přeskočení | Tuto cestu spusťte, pokud se samotná aktivita nespustila. |
Můžete přidat více větví za aktivitou, s jednou výjimkou: Po dokončení cesta nemůže koexistovat s cestou Při úspěchu nebo Při selhání. Pro každé spuštění roury se na základě výsledku provádění aktivity aktivuje maximálně jedna cesta.
Zpracování chyb
Běžný mechanismus zpracování chyb
Vyzkoušet blok Catch
V tomto přístupu zákazník definuje obchodní logiku a definuje pouze cestu Při selhání , která zachytí jakoukoli chybu z předchozí aktivity. Tento přístup vykreslí kanál úspěšně, pokud je cesta při selhání úspěšná.
Blok "Do If Else"
V tomto přístupu zákazník definuje obchodní logiku a definuje cesty při selhání i po úspěchu . Tento přístup způsobí selhání procesu, i když cesta Při selhání uspěje.
Blok "Udělej Pokud Přeskoč Jinak"
V tomto přístupu zákazník definuje obchodní logiku a definuje cestu Při selhání i cestu Při úspěchu s připojenou fiktivní aktivitou Při vynechání . Tento přístup vykreslí kanál úspěšně, pokud je cesta při selhání úspěšná.
Souhrnná tabulka
| Approach | Defines | Když aktivita proběhne úspěšně, zobrazí se celkové potrubí. | Když aktivita selže, zobrazí se celkové potrubí. |
|---|---|---|---|
| Try-Catch | Pouze po selhání | Success | Success |
| Do-If-Else | Cesty při selhání + Cesty při úspěchu | Success | Failure |
| Do-If-Skip-Else | Cesta při chybě + cesta po úspěchu (s náhradní cestou při přeskočení na konci) | Success | Success |
Jak se určují selhání kanálu
Různé mechanismy zpracování chyb vedou k různým stavům kanálu: zatímco některé kanály selžou, jiné jsou úspěšné. Úspěch a selhání pipeline určíme následujícím způsobem:
- Vyhodnoťte výsledek pro všechny koncové aktivity. Pokud byla aktivita typu list vynechána, vyhodnotíme místo toho její nadřazenou aktivitu.
- Výsledek kanálu je úspěšný, pouze pokud jsou všechny uzly vyhodnoceny úspěšně.
Za předpokladu, že aktivita při selhání a aktivita fiktivní při selhání jsou úspěšné,
V přístupu Try-Catch,
- Pokud předchozí aktivita proběhne úspěšně: uzel Upon Failure se přeskočí a jeho nadřazený uzel je považován za úspěšný; celkový procesní tok je úspěšný.
- Pokud předchozí aktivita selže, uzel Při selhání je vykonán; celkový pracovní postup je úspěšný.
V přístupu Do-If-Else
- Když předchozí aktivita proběhne úspěšně: uzel Upon Success je úspěšný a uzel Upon Failure je přeskočen (a jeho nadřazený uzel je úspěšný); celkový procesní řetězec je úspěšný.
- Pokud předchozí aktivita selže: uzel Podmíněně úspěšný se přeskočí a jeho nadřazený uzel selže; selže celý zpracovatelský kanál
V přístupu Do-If-Skip-Else,
- Když předchozí aktivita proběhne úspěšně: uzel Dummy Upon Skip se přeskočí a jeho nadřazený uzel Upon Success proběhne úspěšně; druhá aktivita uzlu Upon Failure se přeskočí a její nadřazený uzel bude úspěšný; celkový kanál je úspěšný.
- Pokud předchozí aktivita selže: uzel Upon Failure proběhne úspěšně a Dummy Upon Skip proběhne úspěšně; celkové potrubí je úspěšné.
Podmíněné spuštění
Při vývoji složitějších a odolných kanálů je někdy nutné zavést do naší logiky podmíněné spouštění: provádění určité aktivity pouze v případě splnění určitých podmínek. Případy použití jsou dostatek, například:
- spuštění následné aktivity, jako je odeslání e-mailového oznámení, pokud předchozí úlohy kopírování proběhly úspěšně
- pokud některé z předchozích aktivit selhaly, spusťte úlohu zpracování chyb.
- přejděte k dalšímu kroku, pokud aktivita samotná nebo odpovídající aktivita zpracování chyb proběhne úspěšně.
- etc.
Tady si vysvětlíme některé běžné logiky a způsob jejich implementace v ADF.
Jedna aktivita
Tady jsou některé běžné vzory, které následují po jedné aktivitě. Tyto vzory můžeme použít jako stavební bloky k vytváření složitých pracovních toků.
Zpracování chyb
Vzor je nejběžnější logika podmínek v ADF. Pro cestu "Při selhání" je definována aktivita zpracování chyb a bude vyvolána v případě selhání hlavní aktivity. Měla by být začleněna jako osvědčený postup pro všechny klíčové kroky, které potřebují náhradní alternativy nebo protokolování.
Kroky pro maximální úsilí
Některé kroky, jako je například protokolování informací, jsou méně důležité a jejich selhání by nemělo blokovat celý kanál. V takových případech bychom měli přijmout strategie maximálního úsilí: přidání dalších kroků na trasu "Po dokončení" pro odblokování pracovního toku.
And
První a nejběžnější situace jsou podmíněné spojení "a": pokračujte v procesu pouze pokud jsou předchozí aktivity úspěšně dokončeny. Například můžete mít několik kopírovacích aktivit, které musí být nejprve úspěšně dokončeny před přechodem na další fázi zpracování dat. V ADF lze chování snadno dosáhnout: deklarujte více závislostí pro další krok. Graficky to znamená, že několik čar směřuje k další aktivitě. Můžete zvolit cestu "Při úspěchu", abyste zajistili, že závislost proběhla úspěšně, nebo cestu "Po dokončení", která umožní nejlepší možné provedení.
V této části se aktivita následného čekání spustí jenom v případě, že byly obě webové aktivity úspěšné.
A tady se aktivita následného čekání provede, jakmile AktivitaProšla a AktivitaSelhala jsou dokončeny. Všimněte si, že cesta "Při úspěchu" znamená, že Aktivita Succeeded musí být úspěšná, zatímco Aktivita Failed na cestě "Při dokončení" běží s nejlepším úsilím, to znamená, že může selhat.
Or
Druhé běžné scénáře jsou podmíněné „nebo“: spuštění aktivity, pokud kterákoliv z závislostí proběhne úspěšně nebo selže. Tady musíme použít cesty "Po dokončení", aktivitu podmínky typu If a jazyk výrazů.
Než se ponoříme do kódu, musíme pochopit ještě jednu věc. Po spuštění a dokončení aktivity můžete odkazovat na její stav pomocí @activity('ActivityName'). Stav. Je to buď "Succeeded" nebo "Failed". Tuto vlastnost používáme k sestavení podmíněného nebo logického objektu.
Krok protokolování pro zpracování sdílených chyb
V některých případech budete možná chtít spustit sdílený krok pro zpracování chyb nebo logování, pokud některé z předchozích aktivit selhaly. Potrubí můžete vytvořit takto:
- paralelní spouštění více aktivit
- přidání podmínky if, která bude obsahovat kroky zpracování chyb, ve větvi True
- Připojte aktivity k podmínkové aktivitě pomocí cesty Po dokončení
- Logický výraz pro vyhodnocení podmínkové aktivity
@or(equals(activity('ActivityFailed').Status, 'Failed'), equals(activity('ActivitySucceeded').Status, 'Failed'))
- Poznámka: Potřebujete zřetězené, nebo pokud máte více než dvě závislé aktivity, například
@or(or(equals(activity('ActivityFailed').Status, 'Failed'), equals(activity('ActivitySucceeded1').Status, 'Failed')),equals(activity('ActivitySucceeded1').Status, 'Failed'))
Greenlight, pokud jakákoli aktivita proběhla úspěšně
Pokud jsou všechny aktivity na bázi nejlepší snahy, můžete pokračovat k dalšímu kroku, pokud některá z předchozích aktivit byla úspěšná. Potrubí můžete vytvořit takto:
- paralelní spouštění více aktivit
- Přidejte podmínku if pro obsahování dalších kroků ve větvi True.
- Připojte aktivity k podmínkové aktivitě pomocí cesty Po dokončení
- Logický výraz pro vyhodnocení podmínkové aktivity
@or(equals(activity('ActivityFailed').Status, 'Succeeded'), equals(activity('ActivitySucceeded').Status, 'Succeeded'))
- Poznámka: Graf vypadá přesně jako předchozí scénář. Jediným rozdílem je použitý jazyk výrazu.
Složité scénáře
Aby bylo pokračovat, musí být všechny aktivity úspěšné.
Vzor je kombinací dvou: podmíněné + zpracování chyb. Kanál pokračuje k dalším krokům, pokud všechny aktivity pokračování proběhnou úspěšně nebo jinak spustí krok protokolování sdílených chyb. Kanál můžete sestavit takto:
- paralelní spouštění více aktivit
- přidat podmínku if. Přidání dalších kroků ve větvi True a přidání kódu pro zpracování chyb ve větvi False
- Připojte aktivity k podmínkové aktivitě pomocí cesty Po dokončení
- Logický výraz pro vyhodnocení podmínkové aktivity
@and(equals(activity('ActivityFailed').Status, 'Succeeded'), equals(activity('ActivitySucceeded').Status, 'Succeeded'))
Obvyklé scénáře
Try-Catch-Proceed
Vzor je ekvivalentem pokusu o zachycení bloku při kódování. Aktivita může v rouře selhat. Pokud selže, zákazník musí spustit úlohu zpracování chyb, aby ji vyřešil. Selhání jedné aktivity by ale nemělo blokovat další aktivity v pipelinu. Pokusím se například spustit úlohu kopírování a přesunout soubory do úložiště. Může ale selhat napůl. A v takovém případě chci odstranit částečně zkopírované, nespolehlivé soubory z účtu úložiště (můj krok zpracování chyb). Ale nemám problém pokračovat v jiných činnostech potom.
Pro nastavení vzoru:
- Přidání první aktivity
- Přidejte zpracování chyb do cesty UponFailure.
- Přidejte druhou aktivitu, ale nepřipojujte se k první aktivitě.
- Propojte cesty UponFailure a UponSkip z aktivity zpracování chyb k druhé aktivitě.
Note
Každá cesta (UponSuccess, UponFailure a UponSkip) může odkazovat na libovolnou aktivitu. Na stejnou aktivitu může odkazovat více cest. Například UponSuccess a UponSkip mohou odkazovat na jednu aktivitu, zatímco UponFailure odkazuje na jiný.
Úloha zpracování chyb se spustí pouze v případě, že selže první aktivita. Další aktivita se spustí bez ohledu na to, jestli první aktivita proběhne úspěšně nebo ne.
Zpracování obecných chyb
V potrubí obvykle běží několik aktivit postupně. Pokud nějaké selže, potřebuji spustit úlohu zpracování chyb, aby se stav vymaže a/nebo se chyba zapíše. Mám například v rámci pipeline sekvenční kopírovací aktivity. Pokud některá z těchto částí selže, potřebuji spustit skript pro záznam selhání pipeline.
Pro nastavení vzoru:
- Sestavení potrubí sekvenčního zpracování dat
- Přidejte krok zpracování obecných chyb na konec zpracování dat.
- Připojte cesty UponFailure i UponSkip z poslední aktivity k aktivitě pro zpracování chyb.
Poslední krok zpracování obecných chyb se spustí pouze v případě, že selže některá z předchozích aktivit. Pokud jsou všechny úspěšné, nespustí se.
Pro zpracování chyb můžete přidat více aktivit.