Trigger Job lorsque les Job en amont sont terminés
Utilisez les Trigger de complétion de Job pour exécuter un LakeFlow Job lorsque un ou plusieurs Job en amont sont terminés. Les Job en amont peuvent être dans différents Workspace attachés au même metastore Unity Catalog. Vous pouvez configurer la dépendance sur le job en aval sans modifier les jobs en amont.
Bêta
Les Trigger de complétion de Job sont en Bêta.
Avant de commencer
- Un administrateur de Workspace doit activer Job Completion Trigger à partir de la page des previews dans le Workspace en aval et dans chaque Workspace en amont.
- Tous les Workspace participants doivent être associés au même metastore Unity Catalog.
- Vous devez avoir CAN MANAGE sur le job en aval pour configurer son trigger.
- L’ identité d’exécution du job en aval doit être assignée à chaque workspace en amont et disposer d’un accès CAN VIEW (Peut voir) ou supérieur sur chaque job surveillé. Ces conditions s’appliquent à la fois aux utilisateurs et aux Service Principal.
Vos propres permissions déterminent les jobs que vous pouvez sélectionner et ouvrir. Les permissions « Exécuter en tant que » du job en aval déterminent si le trigger peut les surveiller.
Fonctionnement des Trigger de fin de Job
Un trigger surveille 1 à 10 jobs en amont et applique le même filtre de résultat à tous :
Résultat de l’exécution en amont | Valeur de l’API | Correspondance des complétions |
|---|---|---|
Réussi (default) |
|
|
Échec |
| Tout code de terminaison autre que |
Terminé avec n’importe quel résultat |
| Toute exécution terminée, quel que soit le code de terminaison |
Avec un Job en amont, chaque nouvelle exécution correspondante start une exécution en aval. Avec plusieurs Job en amont, une exécution en aval start après que tous les Job ont une nouvelle exécution correspondante. Si un job se termine plus d’une fois avant que les autres ne se terminent, la dernière exécution correspondante de ce job contribue à l’exécution en aval.
Par exemple, si A se termine deux fois puis que B se termine, un trigger monitoring A et B démarre une exécution en aval en utilisant la deuxième terminaison de A et la terminaison de B. Les deux Job doivent contribuer à une autre terminaison correspondante pour start l’exécution suivante. Les terminaisons ne sont pas mises en correspondance par date métier ou par batch de données.
Pour s’exécuter après la fin de n’importe quel Job en amont, ajoutez des Trigger distincts, un pour chaque Job. Cela nécessite la version bêta des Trigger multiples.
Les exécutions terminées historiquement ne start pas d’exécutions lorsque le Trigger s’initialise. La modification des Job surveillés ou du filtre de résultat Reset la progression de la terminaison et start le monitoring à zéro. Si le Job en aval atteint son maximum d’exécutions simultanées, les terminaisons prêtes sont conservées jusqu’à ce qu’il puisse start une autre exécution.
Ajouter un trigger de fin de job
- Dans la barre latérale du workspace, cliquez sur Jobs & Pipelines , puis ouvrez le job en aval.
- Dans Plannings et Trigger , cliquez sur Ajouter un Trigger .
- Pour Type de trigger , sélectionnez Achèvement du job en amont .
- Sous Jobs en amont , sélectionnez chaque Workspace de job et Job . Rechercher par nom ou par ID de job.
- Sélectionnez le résultat d’exécution en amont .
- Cliquez sur Test trigger (Tester le trigger) et résolvez les erreurs signalées. Si un job en amont ne peut pas être vérifié au cours de ce test, vérifiez le statut du trigger après la sauvegarde.
- Cliquez sur Enregistrer .
Utilisez Schedules & Triggers pour inspecter la progression de la terminaison de chaque job en amont, modifier le trigger, ou le mettre en pause, le reprendre ou le supprimer. La mise en pause d’un trigger ne stoppe pas les exécutions actives. Voir Gérer les Trigger existants.
Les observateurs du job en aval peuvent voir les ID du workspace, du job et de l’exécution en amont, les résultats d’achèvement et la progression. Les noms des jobs ainsi que l'accès aux jobs et exécutions amont nécessitent les permissions amont du visualiseur.
Configurer avec l’API, le CLI ou des bundles
- REST API
- CLI
- Bundles
Enregistrez cette requête en tant que update-job.json et envoyez-la à POST /api/2.2/jobs/update dans l'API Jobs. Remplacez les IDs par vos IDs de job en aval et de workspace et job en amont.
{
"job_id": 9001,
"new_settings": {
"triggers": [
{
"pause_status": "UNPAUSED",
"job_completion": {
"jobs": [
{ "workspace_id": "123456789", "job_id": "1001" },
{ "workspace_id": "234567890", "job_id": "1002" }
],
"if_status": "SUCCESS"
}
}
]
}
}
Enregistrez le corps de la requête depuis le tab REST API en tant que update-job.json, puis exécutez :
databricks api post /api/2.2/jobs/update --json @update-job.json
Pour un Databricks Asset Bundle, ajoutez les paramètres suivants à une ressource de job existante, en plus de ses tâches :
resources:
jobs:
downstream:
triggers:
- pause_status: UNPAUSED
job_completion:
jobs:
- workspace_id: '123456789'
job_id: '1001'
- workspace_id: '234567890'
job_id: '1002'
if_status: SUCCESS
Ces exemples nécessitent la bêta des Trigger multiples. Pour un trigger unique sans cette bêta, utilisez trigger avec le même objet de trigger au lieu du tableau triggers. Ne combinez pas triggers avec trigger, schedule ou continuous. La mise à jour de triggers remplace l'intégralité du tableau ; incluez donc tous les Trigger existants que vous souhaitez conserver. La validation et le déploiement de bundle nécessitent une version de CLI dont le schéma inclut job_completion.
Utiliser les détails de l’achèvement en amont
Ajoutez un parameter de job nommé upstream_completions avec la valeur {{job.trigger.job_completion.completed_jobs}}. Il résout un tableau JSON avec une entrée par job surveillé, dans l’ordre de configuration :
[
{
"workspace_id": "123456789",
"job_id": "1001",
"run_id": "2001",
"termination_code": "SUCCESS",
"completion_time": "2026-10-07T08:00:00Z"
}
]
Cet exemple montre une entrée. Un Trigger monitoring deux Job retourne deux entrées. Les tentatives et les réparations conservent les complétions contributrices originales. Les exécutions manuelles résolvent la référence à []. Vous pouvez configurer cette référence uniquement lorsque tous les Trigger du Job sont des Trigger de complétion de Job.
Une tâche de notebook peut lire le parameter comme suit :
import json
completed_jobs = json.loads(dbutils.widgets.get("upstream_completions"))
for job in completed_jobs:
print(job["job_id"], job["run_id"], job["termination_code"])
Consultez Paramétrer des jobs. Les mêmes détails d’achèvement sont disponibles dans trigger_info.job_completion.completed_jobs dans l’ API Get run pour les Trigger simples et la version bêta de Multiple Trigger. Pour inspecter la progression de l’achèvement de chaque trigger avec Multiple Triggers, appelez l’ API Get job avec include_trigger_state=true et lisez trigger_details[].state.job_completion.monitored_job_states.
Dépannage
Problème | Action |
|---|---|
L’identité d’exécution n’a pas les autorisations de job ou l’accès au workspace | Attribuez l'identité à chaque workspace en amont et accordez CAN VIEW ou un niveau supérieur sur chaque job surveillé. |
Le job ou le workspace amont n'existe plus | Veuillez supprimer ou remplacer l’entrée concernée. |
Les Workspace ont des métastores différents | Sélectionnez les Job en amont dans les Workspace attachés au metastore du Workspace en aval. |
Bêta désactivée dans un workspace participant | Demandez à un administrateur du Workspace d’activer les Trigger de fin de Job à cet emplacement. |
Limitations
- Un Workspace prend en charge jusqu'à 1 000 Trigger de fin de Job actifs. Ceux-ci sont comptabilisés dans la limite de 12 000 Trigger actifs du Workspace.
- Un Trigger surveille au maximum 10 paires de Workspace & Job distinctes.
- Tous les jobs surveillés partagent un seul filtre de résultat.