Aller au contenu principal

Tâches désactivées dans Lakeflow Jobs

Une tâche désactivée dans un job Lakeflow Databricks est ignorée lors de l’exécution sans être supprimée du job. Les tâches désactivées conservent leur configuration et leur historique d’exécution, vous pouvez donc les réactiver plus tard sans reconstruire la tâche. Cette page explique comment les tâches désactivées se comportent lorsqu'un job s'exécute, y compris leur effet sur les tâches en aval, les réparations et les exécutions partielles.

Comportement des tâches en aval

Lorsqu'un job s'exécute, Lakeflow Jobs évalue la condition **Run if** de chaque tâche en aval par rapport à ses tâches en amont pour décider s'il faut exécuter, ignorer ou désactiver la tâche. Les tâches désactivées se terminent avec un code de fin d'exécution Disabled.

Si la condition « Run if » d'une tâche en aval ne peut pas être remplie parce qu'une ou plusieurs tâches parentes sont désactivées, Lakeflow Jobs marque également la tâche en aval comme désactivée pour cette exécution. Les tâches en aval désactivées affichent un Icône grand cercle désactivée. dans le coin supérieur droit de la vue Graphe orienté acyclique (DAG), afin que vous puissiez voir l'impact avant de lancer une exécution.

Le tableau suivant résume le comportement en aval pour chaque condition Exécuter si lorsqu'une tâche en amont est désactivée. Pour la liste complète des options Exécuter si , consultez Configurer les dépendances de tâche.

Condition d'exécution si

Comportement de la tâche en aval lorsqu'une tâche parente est désactivée

Exemple

**Toutes les opérations ont réussi** (default)

La tâche en aval ne s'exécute pas. Une tâche parente désactivée ne satisfait pas l'exigence succeeded.

A (disabled) → B: B ne s’exécute pas.

Au moins un a réussi

La tâche en aval s'exécute si au moins une autre tâche parent a réussi. Si toutes les autres tâches parentes ont échoué ou ont été désactivées, la tâche en aval ne s'exécute pas.

A (disabled) et C (succeeded) → B: B exécutions.

Aucun échec

La tâche en aval s’exécute si au moins une tâche parente est terminée sans échec. Si toutes les tâches parentes sont désactivées, la tâche en aval ne s’exécute pas.

A (disabled) et C (skipped) → B: B exécutions car aucune tâche parente n'a échoué.

Terminé

La tâche en aval s'exécute normalement. Une tâche parente désactivée est traitée comme terminée.

A (disabled) → B: B exécutions.

Au moins un échec

La tâche en aval s’exécute si au moins une autre tâche parente a échoué. Une tâche parente désactivée n’est pas traitée comme un échec. Si aucune autre tâche parente n'a échoué, la tâche en aval ne s'exécute pas.

A (disabled) et C (failed) → B: B exécutions.

Tout a échoué

La tâche en aval ne s'exécute pas. Une tâche parent désactivée n'est pas considérée comme un échec.

A (disabled) → B: B ne s’exécute pas.

Condition d'exécution si

Comportement de la tâche en aval lorsqu'une tâche parente est désactivée

Exemple

**Toutes les opérations ont réussi** (default)

La tâche en aval ne s'exécute pas. Une tâche parente désactivée ne satisfait pas l'exigence succeeded.

A (disabled) → B: B ne s’exécute pas.

Au moins un a réussi

La tâche en aval s'exécute si au moins une autre tâche parent a réussi. Si toutes les autres tâches parentes ont échoué ou ont été désactivées, la tâche en aval ne s'exécute pas.

A (disabled) et C (succeeded) → B: B exécutions.

Aucun échec

La tâche en aval s’exécute si au moins une tâche parente est terminée sans échec. Si toutes les tâches parentes sont désactivées, la tâche en aval ne s’exécute pas.

A (disabled) et C (skipped) → B: B exécutions car aucune tâche parente n'a échoué.

Terminé

La tâche en aval s'exécute normalement. Une tâche parente désactivée est traitée comme terminée.

A (disabled) → B: B exécutions.

Au moins un échec

La tâche en aval s’exécute si au moins une autre tâche parente a échoué. Une tâche parente désactivée n’est pas traitée comme un échec. Si aucune autre tâche parente n'a échoué, la tâche en aval ne s'exécute pas.

A (disabled) et C (failed) → B: B exécutions.

Tout a échoué

La tâche en aval ne s'exécute pas. Une tâche parent désactivée n'est pas considérée comme un échec.

A (disabled) → B: B ne s’exécute pas.

remarque

Seules les tâches que vous désactivez explicitement ont disabled: true dans la définition de la Job. Lakeflow Jobs détermine la désactivation en aval au moment de la création de l'exécution et ne la persiste pas dans les paramètres du Job.

Désactiver une tâche

Pour désactiver ou réactiver une tâche à l'aide de l'interface utilisateur, consultez Désactiver une tâche.

Pour désactiver une tâche via l'API ou un bundle :

Définissez disabled: true sur la tâche dans les paramètres du job à l'aide de l'API REST Jobs, de la CLI Databricks, du SDK Databricks ou d'un bundle d'automatisation déclarative:

JSON
{
"tasks": [
{
"task_key": "load_raw_data",
"disabled": true,
"notebook_task": {
"notebook_path": "/Shared/etl/load_raw_data"
}
}
]
}

Les réponses jobs/get et jobs/list renvoient disabled: true uniquement pour les tâches que vous avez explicitement désactivées. Les tâches désactivées dynamiquement lors d'une exécution ne sont pas reflétées dans les paramètres de Job stockés.

Tâches désactivées dans les réparations et les exécutions partielles

Les tâches désactivées se comportent différemment dans les exécutions de réparation et les exécutions partielles que dans une exécution planifiée typique :

  • Réparations : Lakeflow Jobs utilise l'état d'exécution de chaque tâche pour déterminer ce qu'il faut réparer, et non l'état désactivé de la tâche. Pour forcer l'exécution d'une tâche désactivée dans le cadre d'une réparation, incluez-la dans rerun_tasks dans la demande de réparation. Consultez Réexécuter les tâches échouées et ignorées.
  • Exécutions partielles : les tâches désactivées ne sont pas sélectionnées par default lorsque vous start une exécution partielle, mais vous pouvez les sélectionner pour les exécuter une fois sans les réactiver dans les paramètres du job. Lakeflow Jobs exécute précisément les tâches que vous sélectionnez et n'applique pas la propagation Exécuter si lors d'une exécution partielle. Lorsque vous utilisez les modificateurs + dans le champ only pour inclure les tâches en amont ou en aval, l'expansion n'inclut pas les tâches désactivées. Pour inclure les tâches désactivées, vous devez les ajouter explicitement.

Limitations

Les tâches désactivées présentent les limitations suivantes :

  • Une tâche If/else condition échoue si la tâche en amont qui fournit sa valeur de condition est désactivée.
  • Une tâche For each échoue si la tâche en amont qui fournit ses valeurs d'entrée est désactivée.
  • Seules les tâches désactivées par l'utilisateur apparaissent comme disabled: true dans la définition du job. Pour voir quelles tâches en aval sont affectées avant d'exécuter le Job, utilisez la vue DAG dans l'interface utilisateur des Jobs.