Aller au contenu principal

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

Utilisez la tâche For each pour exécuter une tâche imbriquée en boucle, en transmettant un ensemble différent de paramètres à chaque itération de la tâche.

L’ajout de la For each tâche à un Job nécessite de définir deux tâches : la For each tâche et une *tâche imbriquée*. La tâche imbriquée est la tâche à exécuter pour chaque itération de la tâche For each 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 pourriez utiliser la tâche For each pour effectuer un ensemble commun de Transformations sur plusieurs tables, en passant 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 Job

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

  1. Cliquez sur Icône Plus. Ajouter une tâche .

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

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

  4. Saisissez un nom pour la tâche dans le champ Nom de la tâche .

  5. Dans la zone de texte Inputs , définissez les valeurs pour que la tâche For each itère sous la forme d'un tableau de valeurs formaté JSON. Pour en savoir plus sur la transmission de paramètres à la tâche imbriquée, consultez Types de Parameter pour la tâche For each.

  6. Pour définir en option le nombre d'itérations pouvant s'exécuter en parallèle, saisissez une valeur de Simultanéité pour la tâche. La valeur par default est 1.

  7. Pour recevoir éventuellement des notifications de start, de réussite ou d'échec de tâche, cliquez sur Icône Plus. Ajouter . Voir Ajouter des notifications sur un Job.

  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 à parcourir .

  9. Sélectionnez un type de tâche et les options de configuration pour la tâche imbriquée. Les tâches imbriquées sont des types de tâches standards et possèdent les mêmes options de configuration. Voir Configurer et modifier des tâches dans Lakeflow Jobs.

  10. Pour faire référence aux parameters transmis par la tâche For each, cliquez sur Parameters . Utilisez la référence {{input}} pour définir la valeur sur la valeur du tableau de chaque itération ou {{input.<key>}} pour référencer des champs d’objet individuels lorsque vous itérez sur une liste d’objets.

    Ajoutez une tâche imbriquée à une tâche Pour chaque.

  11. (Facultatif) Pour configurer les nouvelles tentatives, les threshold de durée d'exécution ou de backlog de streaming, ou les notifications, consultez Paramètres de tâches avancés.

  12. Cliquez sur Enregistrer la tâche .

Pour modifier, cloner, désactiver ou supprimer cette tâche, consultez Configurer et modifier les tâches dans Lakeflow Jobs.

Basculer entre la tâche For each et la tâche imbriquée

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

Passer à l&#39;affichage DAG de l&#39;interface utilisateur des jobs pour chaque tâche

Vue DAG de l&#39;IU des Jobs : passer à la tâche imbriquée

Types de paramètres pour la tâche For each

La tâche For each 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 utilisées par la tâche : tableaux formatés JSON, valeurs de tâche ou paramètres de job.

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 bien 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 Job. Si vos paramètres nécessitent plus de 48 Ko, vous pouvez transmettre une recherche à un fichier de configuration plus grand. Voir Utiliser une table de recherche pour les grands tableaux de paramètres.

Un tableau de valeurs au format JSON

Lorsque vous créez ou modifiez une tâche, vous pouvez directement définir 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
  • Types chaîne, numériques ou booléens
  • Objets JSON arbitrairement complexes

Par exemple, si vous passez [{"table": "sales"}, {"table": "orders"}], faites référence au champ dans la tâche imbriquée avec {{input.table}}.

La zone de texte **Inputs**, et donc le JSON transmis directement dans cette zone, est limitée à 5 000 caractères.

Références de valeurs de tâche

Vous pouvez transmettre les valeurs de tâche à partir d'une tâche précédente. Pour référencer les valeurs de tâche transmises, utilisez la syntaxe {{tasks.<task_name>.values.<task_value_name>}} pour définir la valeur dans la zone de texte Inputs . 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)

Ensuite, la tâche For each fait référence à la valeur de la tâche dans la zone de texte Inputs en utilisant la syntaxe suivante :

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

Vous pouvez saisir jusqu'à 5 000 caractères dans la zone de texte Entrées , mais les valeurs que les références représentent peuvent aller jusqu'à 48 Ko. Pour en savoir plus sur les valeurs de tâche, consultez Utiliser les valeurs de tâche pour transmettre des informations entre les tâches.

Paramètres du Job

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

Vous pouvez insérer jusqu'à 5 000 caractères dans la zone de texte Entrées pour référencer les paramètres de job. Les valeurs des paramètres de job sont limitées à 10 000 caractères. Pour en savoir plus sur les paramètres de job, consultez Configurer les paramètres de job.

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 comme dépendance. Les tâches en aval ne peuvent pas dépendre de la tâche imbriquée ou y faire référence.

remarque

Une tâche For each échoue si la tâche en amont qui fournit ses valeurs d'entrée est désactivée. Consultez les Limitations.

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

L'exécution d'un Job avec une tâche For each est identique à l'exécution de tout autre Job.

L’affichage et la gestion des exécutions de jobs sont également identiques à tout autre job, à l’exception de l’historique d’exécution de la tâche pour une tâche For each, qui est présentée sous forme de tableau d’itérations de tâches. Consultez l'historique d'exécution des tâches pour une tâche For each.

Didacticiel

Pour créer un job basé sur les métadonnées à l'aide d'une tâche SQL et d'une tâche For each, consultez Utiliser une table de contrôle pour piloter un job For each.