Partager via


Utiliser une For each tâche pour exécuter une autre tâche dans une boucle

Cet article décrit comment utiliser la tâche For each avec vos Lakeflow Jobs, y compris des détails sur l'ajout et la configuration de la tâche dans l'interface des tâches. Utilisez la For each tâche pour exécuter une tâche imbriquée dans une boucle, en passant un ensemble de paramètres différent à chaque itération de la tâche.

L’ajout de la tâche For each à un travail nécessite la définition de deux tâches : la tâche For each et une tâche imbriquée. La tâche imbriquée est la tâche à exécuter pour chaque itération de la For each tâche et est l’un des types de tâches Lakeflow Jobs standard. Vous ne pouvez pas ajouter une autre tâche For each en tant que tâche imbriquée.

Par exemple, vous pouvez utiliser la tâche For each pour effectuer un ensemble commun de transformations sur plusieurs tables, en transférant un nom de table d’une liste de noms de tables à chaque itération de la tâche.

Les tâches imbriquées qui n’ont pas de dépendances entre elles peuvent être exécutées simultanément.

Ajouter la tâche For each à un travail

Vous pouvez ajouter une tâche For each lorsque vous créez un projet ou modifiez une tâche dans un projet existant. Pour configurer une tâche For each :

  1. Cliquez sur Ajouter une tâche.

  2. Entrez un nom dans le champ Nom de la tâche .

  3. Dans le menu déroulant Type, sélectionnez Pour chaque.

  4. Dans le champ Nom de la tâche, entrez un nom pour la tâche.

  5. Dans la zone de texte Entrées , définissez les valeurs de la For each tâche à itérer sous la forme d’un tableau de valeurs au format JSON. Pour en savoir plus sur le passage de paramètres à la tâche imbriquée, consultez Quels types de paramètres puis-je utiliser avec la For each tâche ?.

  6. Pour définir facultativement le nombre d’itérations qui peuvent s’exécuter en parallèle, saisissez une valeur de concurrence pour la tâche. La valeur par défaut est 1.

  7. Pour éventuellement recevoir des notifications en cas de démarrage, de réussite ou d’échec de la tâche, cliquez sur + Ajouter. Voir Ajouter des notifications dans une tâche.

  8. Pour terminer la configuration de la tâche For each et ajouter une tâche imbriquée à exécuter pour chaque itération, cliquez sur Ajouter une tâche pour effectuer une boucle.

  9. Sélectionnez un type de tâche et des options de configuration pour la tâche imbriquée. Les tâches imbriquées sont des types de tâches standard et ont les mêmes options de configuration. Consultez Configurer et modifier des tâches dans les travaux Lakeflow.

  10. Pour référencer les paramètres transmis à partir de la tâche For each, cliquez sur Paramètres. Utilisez la référence {{input}} pour définir la valeur du tableau de chaque itération ou {{input.<key>}} pour référencer des champs d’objet individuels lorsque vous effectuez une itération sur une liste d’objets.

    Ajouter une tâche imbriquée à une tâche « Pour chaque tâche »

  11. Cliquez sur Create task.

Basculer entre la tâche For eachet la tâche imbriquée

La tâche For each apparaît dans l'interface utilisateur des tâches en tant que nœud avec le nœud de tâche imbriqué dans le nœud For each. Pour basculer entre la tâche For each et la tâche imbriquée, cliquez sur les nœuds respectifs.

Changement de la vue DAG de l’interface utilisateur des travaux pour « Pour chaque tâche »

Changement de la vue DAG de l’interface utilisateur des travaux pour la tâche imbriquée

Quels types de paramètres puis-je utiliser avec la For each tâche ?

La For each tâche transmet des paramètres à chaque itération de la tâche imbriquée. L’entrée est un tableau d’objets, et chaque objet est passé à une itération de la tâche imbriquée. Il existe plusieurs façons de créer les entrées que la tâche utilise : tableaux au format JSON, valeurs de tâche ou paramètres de travail.

Remarque

Les paramètres sont limités à 5 000 caractères directement dans l’interface utilisateur, ou 48 Ko si vous utilisez des références de valeur de tâche (où la valeur peut être beaucoup plus grande que la taille de la chaîne qui la décrit) ou 10 000 caractères pour la valeur des paramètres de travail. Si vos paramètres nécessitent plus de 48 Ko, vous pouvez faire référence à un fichier de configuration plus volumineux. Consultez Utiliser une table de choix pour les grands tableaux de paramètres.

Tableau de valeurs au format JSON

Lorsque vous créez ou modifiez une tâche, vous pouvez définir directement un tableau de valeurs pour la tâche imbriquée à l’aide de la zone de texte Entrées . Il peut s’agir d’un tableau des types de données suivants :

  • Paires clé-valeur
  • Chaînes, nombres ou types booléens
  • Objets JSON arbitrairement complexes

La zone de texte Entrées , et donc JSON passée directement dans cette zone, est limitée à 5 000 caractères.

Références de la valeur de la tâche

Vous pouvez transmettre des valeurs de tâche à partir d’une tâche précédente. Pour référencer les valeurs de tâche passées, utilisez la {{tasks.<task_name>.values.<task_value_name>}} syntaxe pour définir la valeur dans la zone de texte Entrées . Par exemple, si une tâche nommée generate_countries_list qui précède la tâche For each définit la valeur de tâche suivante :

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

La tâche For each fait ensuite référence à la valeur de la tâche dans la zone de texte Entrées à l’aide de la syntaxe suivante :

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

Vous pouvez placer jusqu’à 5 000 caractères dans la zone de texte Entrées , mais les valeurs représentées par les références peuvent atteindre 48 Ko. Pour en savoir plus sur les valeurs de tâches, consultez Utiliser les valeurs de tâches pour transférer des informations entre les tâches.

Paramètres de travail

Vous pouvez également utiliser des paramètres de travail comme entrée. Pour référencer un paramètre de travail, utilisez la syntaxe suivante dans la zone de texte Entrées : {{job.parameters.<name>}}. Par exemple : {{job.parameters.countries}}.

Vous pouvez placer jusqu’à 5 000 caractères dans la zone de texte Entrées pour référencer les paramètres de travail. Les valeurs des paramètres de travail sont limitées à 10 Ko. Pour en savoir plus sur les paramètres de projet, consultez Configuration des paramètres de projet.

Référencer une tâche For each dans les tâches en aval

La tâche For each est la tâche de niveau supérieur et les tâches en aval peuvent la spécifier en tant que dépendance. Les tâches en aval ne peuvent pas dépendre ou référencer la tâche imbriquée.

Exécuter et surveiller un travail avec une tâche For each

L’exécution d’un travail avec une tâche For each est identique à l’exécution d’un autre travail.

L’affichage et la gestion des exécutions de travaux sont également identiques à n’importe quel autre travail, à l’exception de l’historique des exécutions de tâche pour une tâche For each, qui est présenté sous la forme d’un tableau des itérations de tâches. Consultez l’historique des exécutions des tâches pour une For each tâche.