Sdílet prostřednictvím


Použijte úlohu For each k provedení jiné úlohy ve smyčce

Tento článek popisuje použití For each úlohy s úlohami Lakeflow, včetně podrobností o přidání a konfiguraci úlohy v uživatelském rozhraní úloh. For each Pomocí úlohy můžete spustit vnořenou úlohu ve smyčce a předat do každé iterace úlohy jinou sadu parametrů.

For each Přidání úkolu do úlohy vyžaduje definování dvou úkolů: For each úkol a vnořený úkol. Vnořená úloha je úloha určená ke spuštění při každé iteraci úlohy For each a je jedním ze standardních typů úloh Lakeflow. Nemůžete přidat další For each úkol jako vnořený úkol.

Úlohu můžete například použít For each k provádění společné sady transformací ve více tabulkách a předání názvu tabulky ze seznamu názvů tabulek každé iteraci úlohy.

Vnořené úlohy, které nemají závislosti na sobě, je možné spustit souběžně.

Přidejte úkol For each do úlohy

Úkol můžete přidat For each při vytváření úlohy nebo úpravě úkolu v existující úloze. Chcete-li nakonfigurovat úlohu For each:

  1. V rozevírací nabídce Typ vyberte Pro každý.

  2. Do pole Název úkolu zadejte název úkolu.

  3. V textovém poli Vstupy definujte hodnoty úkolu For each , podle něhož se má iterovat jako pole hodnot ve formátu JSON. Další informace o předávání parametrů do vnořené úlohy najdete v tématu Jaké typy parametrů můžu s For each úkolem použít?.

  4. Pokud chcete volitelně nastavit počet iterací, které se dají spustit paralelně, zadejte hodnotu souběžnosti pro úlohu. Výchozí hodnota je 1.

  5. Pokud chcete volitelně dostávat oznámení o zahájení, úspěchu nebo neúspěchu úkolu, klikněte na + Přidat. Viz Přidat oznámení k úloze.

  6. Pokud chcete dokončit konfiguraci For each úlohy a přidat vnořenou úlohu, která se má spustit pro každou iteraci, klikněte na přidat úlohu, která se má opakovat.

  7. Vyberte typ úlohy a možnosti konfigurace pro vnořenou úlohu. Vnořené úlohy jsou standardní typy úloh a mají stejné možnosti konfigurace. Viz Konfigurace a úprava úkolů v úlohách Lakeflow.

  8. Chcete-li odkazovat na parametry předané z For each úlohy, klepněte na tlačítko Parametry. Pomocí {{input}} můžete nastavit hodnotu na hodnotu pole každé iterace nebo použít {{input.<key>}} k odkazování na jednotlivá pole objektů při iteraci přes seznam objektů.

    Přidejte vnořený úkol k úkolu 'Pro každý úkol'

  9. Klikněte na Vytvořit úkol.

Přepínání mezi For each úkolem a vnořeným úkolem

Úkol For each se zobrazí v uživatelském rozhraní úloh jako uzel s vnořeným uzlem úkolu uvnitř For each uzlu. Pokud chcete přepnout mezi For each úkolem a vnořeným úkolem, klikněte na příslušné uzly.

Přepnutí zobrazení DAG uživatelského rozhraní úloh na možnost Pro každou úlohu

Přepnutí zobrazení DAG uživatelského rozhraní úloh na vnořenou úlohu

Jaké typy parametrů můžu s úkolem For each použít?

Úloha For each předá parametry každé iteraci vnořené úlohy. Vstupem je pole objektů a každý objekt je předán do iterace vnořené úlohy. Existuje několik způsobů, jak vytvořit vstupy, které úloha používá: pole ve formátu JSON, hodnoty úkolů nebo parametry úlohy.

Poznámka:

Parametry jsou v uživatelském rozhraní omezeny na 5 000 znaků přímo nebo 48 kB, pokud používáte odkazy na hodnoty úkolu (kde může být hodnota mnohem větší než velikost řetězce, který ho popisuje), nebo 10 000 znaků pro hodnotu parametrů úlohy. Pokud vaše parametry vyžadují více než 48 kB, můžete předat vyhledávání do většího konfiguračního souboru. Viz Použití vyhledávací tabulky pro velká pole parametrů.

Pole hodnot ve formátu JSON

Při vytváření nebo úpravě úkolu můžete přímo definovat pole hodnot pro vnořený úkol pomocí textového pole Vstupy . Může se jednat o pole následujících datových typů:

  • Páry klíč-hodnota
  • Řetězce, čísla nebo logické typy
  • Libovolně složité objekty JSON

Textové pole Vstupy , a proto KÓD JSON předaný přímo v tomto poli je omezený na 5 000 znaků.

Odkazy na hodnoty úkolu

Hodnoty úkolů můžete předat z předchozího úkolu. Pokud chcete odkazovat na předané hodnoty úkolů, použijte {{tasks.<task_name>.values.<task_value_name>}} syntaxi k nastavení hodnoty v textovém poli Vstupy . Pokud například úkol s názvem generate_countries_list , který předchází For each úkolu, nastaví následující hodnotu úkolu:

dbutils.jobs.taskValues.set(key = "countries", value = countries_array)

For each Úloha pak odkazuje na hodnotu úkolu v textovém poli Vstupy pomocí následující syntaxe:

{{tasks.generate_countries_list.values.countries}}.

Do textového pole Vstupy můžete vložit až 5 000 znaků, ale hodnoty, které představují odkazy, mohou být až 48 kB. Další informace o hodnotách úkolů najdete v tématu Použití hodnot úkolů k předávání informací mezi úkoly.

Parametry úlohy

Jako vstup můžete použít také parametry úlohy. Chcete-li odkazovat na parametr úlohy, použijte následující syntaxi v textovém poli Vstupy : {{job.parameters.<name>}}. Například: {{job.parameters.countries}}.

Do textového pole Vstupy můžete vložit až 5 000 znaků, abyste mohli odkazovat parametry úlohy. Hodnoty parametrů úlohy jsou omezené na 10 kB. Další informace o parametrech úlohy najdete v tématu Konfigurace parametrů úlohy.

Odkaz na For each úkol v podřízených úkolech

Úkol For each je úkol nejvyšší úrovně a podřízené úkoly ho můžou určit jako závislost. Podřízené úkoly nemohou záviset na vnořeném úkolu ani na něm odkazovat.

Spusťte a sledujte úlohu s úkolem For each.

Spuštění úlohy s For each úkolem je stejné jako spuštění jakékoli jiné úlohy.

Zobrazení a správa spuštění úloh je také totožné s jakoukoli jinou úlohou For each , s výjimkou historie spuštění úkolu, která se zobrazuje jako tabulka iterací úkolů. Viz Historie spuštění úlohyFor each.