Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Le schéma lakeflow était auparavant connu sous le nom de workflow. Le contenu des deux schémas est identique.
Cet article est une référence relative aux tables système lakeflow qui enregistrent l’activité des travaux dans votre compte. Ces tables incluent des enregistrements de tous les espaces de travail de votre compte déployés dans la même région cloud. Pour afficher les enregistrements d’une autre région, vous devez afficher les tables d’un espace de travail déployé dans cette région.
Requirements
- Pour accéder à ces tables système, les utilisateurs doivent :
- Être à la fois un administrateur de metastore et un administrateur de compte, ou
- Disposer des autorisations
USEetSELECTsur les schémas système. Consultez Octroyer un accès aux tables système.
Tables de travaux disponibles
Toutes les tables système liées au travail résident dans le schéma system.lakeflow. Actuellement, le schéma héberge quatre tables :
| Table | Description | Prend en charge la diffusion en continu | Période de rétention gratuite | Inclut des données globales ou régionales |
|---|---|---|---|---|
| travaux (préversion publique) | Effectue le suivi de tous les travaux créés dans le compte | Yes | 365 jours | Regional |
| job_tasks (préversion publique) | Effectue le suivi de toutes les tâches de travail qui s’exécutent dans le compte | Yes | 365 jours | Regional |
| job_run_timeline (préversion publique) | Effectue le suivi des exécutions du travail et des métadonnées associées | Yes | 365 jours | Regional |
| job_task_run_timeline (préversion publique) | Effectue le suivi des exécutions des tâches de travail et des métadonnées associées | Yes | 365 jours | Regional |
| pipelines (préversion publique) | Effectue le suivi de tous les pipelines créés dans le compte | Yes | 365 jours | Regional |
| pipeline_update_timeline (préversion publique) | Effectue le suivi des mises à jour du pipeline et des métadonnées associées | Yes | 365 jours | Regional |
Informations de référence détaillées sur le schéma
Les sections suivantes fournissent des références de schéma pour chacune des tables système liées aux travaux.
Schéma de la table des travaux
La table jobs est une table de dimension à variation lente (SCD2). Lorsqu’une ligne change, une nouvelle ligne est émise, remplaçant logiquement la ligne précédente.
Chemin d’accès de la table : system.lakeflow.jobs
| Nom de colonne | Type de données | Description | Notes |
|---|---|---|---|
account_id |
string | ID du compte auquel appartient ce travail | |
workspace_id |
string | ID de l’espace de travail auquel appartient ce travail | |
job_id |
string | L'ID de la tâche | Unique au sein d’un seul espace de travail |
name |
string | Nom de la tâche fourni par l’utilisateur | |
description |
string | Description fournie par l’utilisateur du travail | Ce champ est vide si vous avez configuré des clés gérées par le client . |
creator_id |
string | ID du principal qui a créé le travail | |
tags |
map | Balises personnalisées fournies par l’utilisateur associées à ce travail | |
change_time |
timestamp | Heure de la dernière modification du travail | Fuseau horaire enregistré en tant que +00:00 (UTC) |
delete_time |
timestamp | Heure à laquelle le travail a été supprimé par l’utilisateur | Fuseau horaire enregistré en tant que +00:00 (UTC) |
run_as |
string | ID de l’utilisateur ou du principal de service dont les autorisations sont utilisées pour la mise à jour du pipeline | |
trigger |
struct | Configuration du déclencheur pour le travail | Non renseigné pour les lignes émises avant début décembre 2025 |
trigger_type |
string | Type de déclencheur pour la tâche | Non renseigné pour les lignes émises avant début décembre 2025 |
run_as_user_name |
string | E-mail de l’utilisateur ou de l’ID du principal de service dont les autorisations sont utilisées pour l’exécution du travail | Non renseigné pour les lignes émises avant début décembre 2025 |
creator_user_name |
string | E-mail de l’utilisateur ou de l’ID du principal de service qui a créé le travail | Non renseigné pour les lignes émises avant début décembre 2025 |
paused |
boolean | Indique si le travail est suspendu | Non renseigné pour les lignes émises avant début décembre 2025 |
timeout_seconds |
long | Durée du délai d’expiration de la tâche en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
health_rules |
array | Ensemble de règles d’intégrité définies pour ce travail | Non renseigné pour les lignes émises avant début décembre 2025 |
deployment |
struct | Informations de déploiement pour les travaux gérés par des sources externes | Non renseigné pour les lignes émises avant début décembre 2025 |
create_time |
timestamp | Heure à laquelle cette tâche a été créée. Fuseau horaire enregistré en tant que +00:00 (UTC). | Non renseigné pour les lignes émises avant début décembre 2025 |
Exemple de requête
-- Get the most recent version of a job
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Schéma de la table des tâches
La table tâches de travail est une table de dimensions à variation lente (SCD2). Lorsqu’une ligne change, une nouvelle ligne est émise, remplaçant logiquement la ligne précédente.
Chemin d’accès de la table : system.lakeflow.job_tasks
| Nom de colonne | Type de données | Description | Notes |
|---|---|---|---|
account_id |
string | ID du compte auquel appartient ce travail | |
workspace_id |
string | ID de l’espace de travail auquel appartient ce travail | |
job_id |
string | L'ID de la tâche | Unique au sein d’un seul espace de travail |
task_key |
string | Clé de référence pour une tâche dans un travail | Unique au sein d'une seule mission |
depends_on_keys |
array | Les clés des tâches de toutes les dépendances en amont de cette tâche | |
change_time |
timestamp | Heure de la dernière modification de la tâche | Fuseau horaire enregistré en tant que +00:00 (UTC) |
delete_time |
timestamp | Heure à laquelle une tâche a été supprimée par l’utilisateur | Fuseau horaire enregistré en tant que +00:00 (UTC) |
timeout_seconds |
long | Durée du délai d’expiration de la tâche en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
health_rules |
array | Ensemble de règles d’intégrité définies pour cette tâche de travail | Non renseigné pour les lignes émises avant début décembre 2025 |
Exemple de requête
-- Get the most recent version of a job task
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.job_tasks QUALIFY rn=1
Schéma de la table de chronologie d'exécution de la tâche
La table de chronologie d'exécution de la tâche est immuable et terminée au moment où elle est produite.
Chemin d’accès de la table : system.lakeflow.job_run_timeline
| Nom de colonne | Type de données | Description | Notes |
|---|---|---|---|
account_id |
string | ID du compte auquel appartient ce travail | |
workspace_id |
string | ID de l’espace de travail auquel appartient ce travail | |
job_id |
string | L'ID de la tâche | Cette clé n’est unique qu’au sein d’un seul espace de travail |
run_id |
string | L'ID d'exécution de la tâche | |
period_start_time |
timestamp | L'heure de début de l’exécution ou de la période | Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. Pour plus d’informations sur la façon dont Databricks découpe les longues exécutions en intervalles horaires, consultez la logique de découpage de la chronologie. |
period_end_time |
timestamp | Heure de fin de l’exécution d'un programme ou de la période | Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. Pour plus d’informations sur la façon dont Databricks découpe les longues exécutions en intervalles horaires, consultez la logique de découpage de la chronologie. |
trigger_type |
string | Type de déclencheur pouvant déclencher une exécution | Pour connaître les valeurs possibles, consultez Valeurs du type de déclencheur |
run_type |
string | Type d’exécution du travail | Pour connaître les valeurs possibles, consultez Valeurs de type d’exécution |
run_name |
string | Nom d’exécution fourni par l’utilisateur associé à cette exécution de travail | |
compute_ids |
array | Tableau contenant les ID de calcul du travail pour l’exécution du travail parent. | Utilisé pour identifier le cluster de travaux utilisé par les types d’exécution WORKFLOW_RUN. Pour d’autres informations de calcul, reportez-vous à la table job_task_run_timeline. |
result_state |
string | Résultat de l’exécution du travail | Pour les exécutions de plus d’une heure réparties sur plusieurs lignes, cette colonne est remplie uniquement dans la ligne qui représente la fin de l’exécution. Pour connaître les valeurs possibles, consultez les valeurs d’état de résultat. |
termination_code |
string | Code de terminaison de l'exécution de la tâche | Pour les exécutions de plus d’une heure réparties sur plusieurs lignes, cette colonne est remplie uniquement dans la ligne qui représente la fin de l’exécution. Pour connaître les valeurs possibles, consultez Valeurs de code d’arrêt. |
job_parameters |
map | Paramètres au niveau du travail utilisés dans l’exécution du travail | Contient uniquement les valeurs de job_parameters. Les champs de paramètre déconseillés (notebook_params, , python_params, python_named_paramsspark_submit_paramset sql_params) ne sont pas inclus. |
source_task_run_id |
string | ID de la tâche source exécutée. Utilisez cette colonne pour identifier l’exécution de la tâche qui a déclenché cette exécution de travail. | Non renseigné pour les lignes émises avant début décembre 2025 |
root_task_run_id |
string | ID de la tâche racine exécutée. Utilisez cette colonne pour identifier l’exécution de la tâche qui a déclenché cette exécution de travail. | Non renseigné pour les lignes émises avant début décembre 2025 |
compute |
array | Détails sur les ressources de calcul utilisées dans l’exécution du travail | Non renseigné pour les lignes émises avant début décembre 2025 |
termination_type |
string | Type de fin pour l’exécution de tâche | Non renseigné pour les lignes émises avant début décembre 2025 |
setup_duration_seconds |
long | Durée de la phase d’installation pour l'exécution de la tâche en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
queue_duration_seconds |
long | Durée passée dans la file d’attente pour l’exécution du travail en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
run_duration_seconds |
long | Durée totale de l’exécution du travail en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
cleanup_duration_seconds |
long | Durée de la phase de nettoyage de l’exécution du travail en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
execution_duration_seconds |
long | Durée de la phase d’exécution du travail en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
Exemple de requête
-- This query gets the daily job count for a workspace for the last 7 days:
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
-- This query returns the daily job count for a workspace for the last 7 days, distributed by the outcome of the job run.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
-- This query returns the average time of job runs, measured in seconds. The records are organized by job. A top 90 and a 95 percentile column show the average lengths of the job's longest runs.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.job_id,
COUNT(DISTINCT t1.run_id) as runs,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
job_run_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
-- This query provides a historical runtime for a specific job based on the `run_name` parameter. For the query to work, you must set the `run_name`.
SELECT
workspace_id,
run_id,
SUM(period_end_time - period_start_time) as run_time
FROM system.lakeflow.job_run_timeline
WHERE
run_type="SUBMIT_RUN"
AND run_name = :run_name
AND period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
GROUP BY ALL
-- This query collects a list of retried job runs with the number of retries for each run.
with repaired_runs as (
SELECT
workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
FROM system.lakeflow.job_run_timeline
WHERE result_state IS NOT NULL
GROUP BY ALL
HAVING retries_count > 0
)
SELECT
*
FROM repaired_runs
ORDER BY retries_count DESC
LIMIT 10;
Schéma de la table de chronologie d'exécution de la tâche de travail
La table de chronologie d'exécution de la tâche de travail est immuable et terminée au moment où elle est produite.
Chemin d’accès de la table : system.lakeflow.job_task_run_timeline
| Nom de colonne | Type de données | Description | Notes |
|---|---|---|---|
account_id |
string | ID du compte auquel appartient ce travail | |
workspace_id |
string | ID de l’espace de travail auquel appartient ce travail | |
job_id |
string | L'ID de la tâche | Unique au sein d’un seul espace de travail |
run_id |
string | L'ID de l’exécution de la tâche. | |
job_run_id |
string | L'ID d'exécution de la tâche | |
parent_run_id |
string | L'ID de l’exécution parente. | |
period_start_time |
timestamp | Heure de début de la tâche ou de la période | Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. Pour plus d’informations sur la façon dont Databricks découpe les longues exécutions en intervalles horaires, consultez la logique de découpage de la chronologie. |
period_end_time |
timestamp | Heure de fin de la tâche ou de la période | Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. Pour plus d’informations sur la façon dont Databricks découpe les longues exécutions en intervalles horaires, consultez la logique de découpage de la chronologie. |
task_key |
string | Clé de référence pour une tâche dans un travail | Cette clé n’est unique qu’au sein d’un seul travail |
compute_ids |
array | Le tableau compute_ids contient des ID de clusters de travaux, de clusters interactifs et d’entrepôts SQL utilisés par la tâche de travail | |
result_state |
string | Résultat de l’exécution de la tâche de travail | Pour les exécutions de tâches supérieures à une heure réparties sur plusieurs lignes, cette colonne est remplie uniquement dans la ligne qui représente la fin de l’exécution. Pour connaître les valeurs possibles, consultez les valeurs d’état de résultat. |
termination_code |
string | Code d’arrêt de l’exécution de la tâche | Pour les exécutions de tâches supérieures à une heure réparties sur plusieurs lignes, cette colonne est remplie uniquement dans la ligne qui représente la fin de l’exécution. Pour connaître les valeurs possibles, consultez Valeurs de code d’arrêt. |
compute |
array | Détails sur les ressources de calcul utilisées dans l’exécution de la tâche de travail | Non renseigné pour les lignes émises avant début décembre 2025 |
termination_type |
string | Type de fin pour l’exécution de la tâche | Non renseigné pour les lignes émises avant début décembre 2025 |
task_parameters |
map | Paramètres de niveau tâche utilisés dans l’exécution de la tâche de travail | Non renseigné pour les lignes émises avant début décembre 2025 |
setup_duration_seconds |
long | Durée de la phase d’installation de la tâche exécutée en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
cleanup_duration_seconds |
long | Durée de la phase de nettoyage de la tâche exécutée en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
execution_duration_seconds |
long | Durée de la phase d’exécution de la tâche en secondes | Non renseigné pour les lignes émises avant début décembre 2025 |
Schéma de la table des pipelines
La table pipelines est une table de dimension à variation lente (SCD2). Lorsqu’une ligne change, une nouvelle ligne est émise, remplaçant logiquement la ligne précédente.
Chemin d’accès de la table : system.lakeflow.pipelines
| Nom de colonne | Type de données | Description | Notes |
|---|---|---|---|
account_id |
string | ID du compte auquel appartient ce pipeline | |
workspace_id |
string | L'ID de l’espace de travail auquel appartient ce pipeline | |
pipeline_id |
string | L'ID du pipeline | Unique au sein d’un seul espace de travail |
pipeline_type |
string | Type du pipeline | Pour connaître les valeurs possibles, consultez valeurs de type de pipeline |
name |
string | Nom fourni par l’utilisateur du pipeline | |
created_by |
string | E-mail de l’utilisateur ou de l’ID du principal de service qui a créé le pipeline | |
run_as |
string | E-mail de l’utilisateur ou de l’ID du principal de service dont les autorisations sont utilisées pour l’exécution du pipeline | |
tags |
map | Balises personnalisées fournies par l’utilisateur associées à ce travail | |
settings |
struct | Les paramètres du pipeline | Afficher les paramètres du pipeline |
configuration |
map | Configuration fournie par l’utilisateur du pipeline | |
change_time |
timestamp | Heure de la dernière modification du pipeline | Fuseau horaire enregistré en tant que +00:00 (UTC) |
delete_time |
timestamp | Heure à laquelle le pipeline a été supprimé par l’utilisateur | Fuseau horaire enregistré en tant que +00:00 (UTC) |
create_time |
timestamp | Heure à laquelle un pipeline a été créé par l’utilisateur. Fuseau horaire enregistré en tant que +00:00 (UTC). | Non renseigné pour les lignes émises avant début décembre 2025 |
Exemple de requête
-- Get the most recent version of a pipeline
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, pipeline_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.pipelines QUALIFY rn=1
-- Enrich billing logs with pipeline metadata
with latest_pipelines AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, pipeline_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.pipelines QUALIFY rn=1
)
SELECT
usage.*,
pipelines.*
FROM system.billing.usage
LEFT JOIN latest_pipelines
ON (usage.workspace_id = pipelines.workspace_id
AND usage.usage_metadata.dlt_pipeline_id = pipelines.pipeline_id)
WHERE
usage.usage_metadata.dlt_pipeline_id IS NOT NULL
Schéma de la table des délais de mise à jour du pipeline
La table de mise à jour du calendrier du pipeline est immuable et complète au moment où elle est produite.
Chemin d’accès de la table : system.lakeflow.pipeline_update_timeline
| Nom de colonne | Type de données | Description | Notes |
|---|---|---|---|
account_id |
string | ID du compte auquel appartient ce pipeline | |
workspace_id |
string | L'ID de l’espace de travail auquel appartient ce pipeline | |
pipeline_id |
string | L'ID du pipeline | Unique au sein d’un seul espace de travail |
update_id |
string | L'ID de la mise à jour du pipeline | Unique au sein d’un seul espace de travail |
update_type |
string | Type de la mise à jour du pipeline | Pour connaître les valeurs possibles, consultez les valeurs de type de mise à jour du pipeline |
request_id |
string | ID de la requête. Permet de comprendre combien de fois une mise à jour a dû être retentée/redémarrée | |
run_as_user_name |
string | E-mail de l’utilisateur ou de l’ID du principal de service dont les autorisations sont utilisées pour la mise à jour du pipeline | |
trigger_type |
string | Ce qui a déclenché cette mise à jour | Pour connaître les valeurs possibles, consultez les valeurs de type de déclencheur de pipeline |
trigger_details |
struct | Détails du déclencheur du pipeline | Pour connaître les valeurs possibles, consultez les détails du type de déclencheur de pipeline |
result_state |
string | Résultat final de la mise à jour du pipeline | Pour les mises à jour exécutées sur plus de 1 heure réparties sur plusieurs lignes, cette colonne est renseignée uniquement dans la ligne qui représente la fin de la mise à jour. Pour connaître les valeurs possibles, consultez référence des résultats du pipeline. |
compute |
struct | Détails sur la ressource de calcul utilisée dans la mise à jour du pipeline | |
period_start_time |
timestamp | Heure de début de la mise à jour du pipeline ou de l’heure. La valeur est stockée en tant qu’horodatage UTC. | Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. Pour plus d’informations sur la façon dont Databricks découpe les longues exécutions en intervalles horaires, consultez la logique de découpage de la chronologie. |
period_end_time |
timestamp | Heure de fin de la mise à jour du pipeline ou de l’heure. La valeur est stockée en tant qu’horodatage UTC. | Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. Pour plus d’informations sur la façon dont Databricks découpe les longues exécutions en intervalles horaires, consultez la logique de découpage de la chronologie. |
refresh_selection |
array | Une liste des tables à mettre à jour sans fullRefresh | |
full_refresh_selection |
array | Liste des tables à mettre à jour avec fullRefresh | |
reset_checkpoint_selection |
array | Liste des flux de streaming afin d'effacer les points de contrôle. |
Exemple de requête
-- This query gets the daily pipeline update count for a workspace for the last 7 days:
SELECT
workspace_id,
COUNT(DISTINCT update_id) as update_count,
to_date(period_start_time) as date
FROM system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
-- This query returns the daily pipeline update count for a workspace for the last 7 days, distributed by the outcome of the pipeline update.
SELECT
workspace_id,
COUNT(DISTINCT update_id) as update_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
-- This query returns the average time of pipeline updates, measured in seconds. The records are organized by pipeline. A top 90 and a 95 percentile column show the average lengths of the pipeline's longest updates.
with pipeline_update_duration as (
SELECT
workspace_id,
pipeline_id,
update_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.pipeline_id,
COUNT(DISTINCT t1.update_id) as update_count,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
pipeline_update_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
modèles de jointure courants
Les sections suivantes fournissent des exemples de requêtes qui mettent en évidence les modèles de jointure couramment utilisés pour les tables système de travaux.
Joindre les tables des travaux et des chronologies d’exécution des travaux
Enrichir l’exécution d’un travail avec un nom de travail
with jobs as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
job_run_timeline.*
jobs.name
FROM system.lakeflow.job_run_timeline
LEFT JOIN jobs USING (workspace_id, job_id)
Joindre les tables d'utilisation et des chronologies d’exécution des travaux
Enrichir chaque journal de facturation avec les métadonnées d’exécution du travail
La requête suivante enrichit les journaux de facturation avec les métadonnées d’exécution de travaux classiques et sans serveur :
with aggregated_job_runs AS (
SELECT
j.workspace_id,
COALESCE(t.job_id, j.job_id) as origin_job_id,
COALESCE(t.job_run_id, j.run_id) AS origin_job_run_id,
j.job_id as billing_job_id,
j.run_id as billing_run_id,
CASE WHEN j.root_task_run_id IS NOT NULL THEN true ELSE false END AS is_workflow_run
FROM
system.lakeflow.job_run_timeline j
LEFT JOIN
system.lakeflow.job_task_run_timeline t
ON
j.workspace_id = t.workspace_id
AND j.root_task_run_id = t.run_id
WHERE j.period_start_time >= CURRENT_DATE() - INTERVAL 7 DAYS
GROUP BY ALL
),
billing_logs_enriched AS (
SELECT
t2.origin_job_id,
t2.origin_job_run_id,
t1.*
FROM system.billing.usage t1
INNER JOIN aggregated_job_runs t2
ON t1.workspace_id = t2.workspace_id
AND t1.usage_metadata.job_id = t2.billing_job_id
AND t1.usage_metadata.job_run_id = t2.billing_run_id
WHERE
billing_origin_product="JOBS" AND usage_date >= CURRENT_DATE() - INTERVAL 7 DAYS
)
SELECT
workspace_id,
origin_job_id AS job_id,
origin_job_run_id AS run_id,
sku_name,
SUM(usage_quantity) as total_usage_quantity,
SUM(CASE WHEN usage_metadata.job_run_id != origin_job_run_id THEN usage_quantity ELSE 0 END) AS workflow_run_usage_quantity,
COUNT(DISTINCT usage_metadata.job_run_id) - 1 AS workflow_runs
FROM billing_logs_enriched
GROUP BY ALL
Calculer le coût par exécution du travail
Cette requête se joint à la table système billing.usage pour calculer un coût par exécution de tâche.
with jobs_usage AS (
SELECT
*,
usage_metadata.job_id,
usage_metadata.job_run_id as run_id,
identity_metadata.run_as as run_as
FROM system.billing.usage
WHERE billing_origin_product="JOBS"
),
jobs_usage_with_usd AS (
SELECT
jobs_usage.*,
usage_quantity * pricing.default as usage_usd
FROM jobs_usage
LEFT JOIN system.billing.list_prices pricing ON
jobs_usage.sku_name = pricing.sku_name
AND pricing.price_start_time <= jobs_usage.usage_start_time
AND (pricing.price_end_time >= jobs_usage.usage_start_time OR pricing.price_end_time IS NULL)
AND pricing.currency_code="USD"
),
jobs_usage_aggregated AS (
SELECT
workspace_id,
job_id,
run_id,
FIRST(run_as, TRUE) as run_as,
sku_name,
SUM(usage_usd) as usage_usd,
SUM(usage_quantity) as usage_quantity
FROM jobs_usage_with_usd
GROUP BY ALL
)
SELECT
t1.*,
MIN(period_start_time) as run_start_time,
MAX(period_end_time) as run_end_time,
FIRST(result_state, TRUE) as result_state
FROM jobs_usage_aggregated t1
LEFT JOIN system.lakeflow.job_run_timeline t2 USING (workspace_id, job_id, run_id)
GROUP BY ALL
ORDER BY usage_usd DESC
LIMIT 100
Obtenir les journaux d’utilisation d’un travail SUBMIT_RUN
SELECT
*
FROM system.billing.usage
WHERE
EXISTS (
SELECT 1
FROM system.lakeflow.job_run_timeline
WHERE
job_run_timeline.job_id = usage_metadata.job_id
AND run_name = :run_name
AND workspace_id = :workspace_id
)
Joindre les tables de chronologie d’exécution de tâches de travaux et de clusters
Enrichir les exécutions de tâches avec les métadonnées des clusters
with clusters as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters QUALIFY rn=1
),
exploded_task_runs AS (
SELECT
*,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE array_size(compute_ids) > 0
)
SELECT
*
FROM exploded_task_runs t1
LEFT JOIN clusters t2
USING (workspace_id, cluster_id)
Rechercher les travaux en cours d’exécution sur le calcul à usage général
Cette requête s’associe à la table système compute.clusters pour renvoyer les travaux récents exécutés sur le calcul à usage général au lieu du calcul des travaux.
with clusters AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters
WHERE cluster_source="UI" OR cluster_source="API"
QUALIFY rn=1
),
job_tasks_exploded AS (
SELECT
workspace_id,
job_id,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE period_start_time >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY ALL
),
all_purpose_cluster_jobs AS (
SELECT
t1.*,
t2.cluster_name,
t2.owned_by,
t2.dbr_version
FROM job_tasks_exploded t1
INNER JOIN clusters t2 USING (workspace_id, cluster_id)
)
SELECT * FROM all_purpose_cluster_jobs LIMIT 10;
Rechercher des travaux qui n’ont pas été exécutés au cours des 30 derniers jours
Cette requête joint les tables système et lakeflow.jobs les lakeflow.job_run_timeline tables système pour retourner des travaux qui n’ont pas été exécutés au cours des 30 derniers jours.
with latest_jobs AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
),
latest_not_deleted_jobs AS (
SELECT
workspace_id,
job_id,
name,
change_time,
tags
FROM latest_jobs WHERE delete_time IS NULL
),
last_seen_job_timestamp AS (
SELECT
workspace_id,
job_id,
MAX(period_start_time) as last_executed_at
FROM system.lakeflow.job_run_timeline
WHERE
run_type="JOB_RUN"
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.job_id,
t1.name,
t1.change_time as last_modified_at,
t2.last_executed_at,
t1.tags
FROM latest_not_deleted_jobs t1
LEFT JOIN last_seen_job_timestamp t2
USING (workspace_id, job_id)
WHERE
(t2.last_executed_at <= CURRENT_DATE() - INTERVAL 30 DAYS) OR (t2.last_executed_at IS NULL)
ORDER BY last_executed_at ASC
Tableau de bord de surveillance des emplois
Le tableau de bord ci-après utilise des tables système pour vous aider à débuter la surveillance de vos travaux et de la santé opérationnelle. Il inclut des cas d’usage courants tels que le suivi des performances des travaux, la surveillance des défaillances et l’utilisation des ressources.
Pour plus d’informations sur le téléchargement du tableau de bord, consultez Surveiller les coûts & les performances des travaux avec les tables système
Troubleshooting
La tâche n'est pas consignée dans la table lakeflow.jobs
Si un travail n’est pas visible dans les tables système :
- Le travail n’a pas été modifié au cours des 365 derniers jours
- Modifier tous les champs du travail présents dans le schéma afin d'émettre un nouvel enregistrement.
- Le travail a été créé dans une autre région
- Création récente d’emploi (décalage dans les données)
Impossible de trouver un travail affiché dans la job_run_timeline table
Toutes les exécutions des travaux ne sont pas visibles partout. Bien que les entrées JOB_RUN apparaissent dans toutes les tables liées aux travaux, les WORKFLOW_RUN (exécutions de workflows de notebooks) sont enregistrées seulement dans job_run_timeline et les SUBMIT_RUN (exécutions soumises une seule fois) sont enregistrées seulement dans les deux tables de chronologie. Ces exécutions ne sont pas renseignées dans d’autres tables système des travaux, comme jobs ou job_tasks.
Consultez le tableau Des types d’exécution ci-dessous pour obtenir une répartition détaillée des emplacements où chaque type d’exécution est visible et accessible.
Exécution de travail non visible dans la table billing.usage
Dans system.billing.usage, le usage_metadata.job_id est renseigné seulement pour les tâches qui s’exécutent sur le calcul des travaux ou sur le calcul serverless.
En outre, les travaux WORKFLOW_RUN n’ont pas leur propre attribution de usage_metadata.job_id ou de usage_metadata.job_run_id dans system.billing.usage.
Au lieu de cela, leur utilisation des ressources de calcul est attribuée au bloc-notes parent qui l'a déclenchée.
Cela signifie que lorsqu’un notebook lance une exécution de flux de travail, tous les coûts de calcul apparaissent sous l’utilisation du notebook parent, et non en tant que travail de flux de travail distinct.
Pour plus d’informations, consultez la référence d'utilisation des métadonnées .
Calculer le coût d’un travail s'exécutant sur un calculateur polyvalent
Le calcul précis des coûts pour les travaux exécutés sur un calcul dédié n’est pas possible avec une précision de 100 %. Lorsqu’un travail s’exécute sur un calcul interactif (à usage unique), plusieurs charges de travail telles que des notebooks, des requêtes SQL ou d’autres travaux s’exécutent souvent simultanément sur cette même ressource de calcul. Étant donné que les ressources de cluster sont partagées, il n’existe aucun mappage direct 1:1 entre les coûts de calcul et les exécutions de travaux individuelles.
Pour un suivi précis des coûts des travaux, Databricks recommande d’exécuter les travaux sur des calculs de travaux dédiés ou sur un calcul serverless, où le usage_metadata.job_id et le usage_metadata.job_run_id permettent une attribution précise des coûts.
Si vous devez utiliser le calcul à usage unique, vous pouvez :
- Surveillez l’utilisation globale du cluster et les coûts dans
system.billing.usageen fonction deusage_metadata.cluster_id. - Suivez séparément les métriques de temps d'exécution des tâches.
- Considérez que toute estimation des coûts sera approximative en raison des ressources partagées.
Consultez la référence de la métadonnée d'utilisation pour obtenir plus d'informations sur l’attribution des coûts.
Valeurs de référence
La section suivante inclut des références pour sélectionner des colonnes dans des tables liées aux travaux.
Logique de découpage dans les tables de chronologie
Les colonnes period_start_time et period_end_time dans les tables job_run_timeline et job_task_run_timeline enregistrent la période active d’une exécution de travail ou d’une exécution de tâche.
:::warning Important change
À compter du 19 janvier 2026, les nouvelles lignes émises dans les tables de chronologie utilisent une logique de découpage alignée sur l’heure d’horloge. Les lignes existantes resteront inchangées.
Les tranches sont créées à intervalles d'une heure, en fonction de l'heure de démarrage de l'exécution. Par exemple, un travail commençant à 16 h 47 crée des tranches de 16 h 47 à 17 h 47, de 17 h 47 à 18 h 47, et ainsi de suite.
Les tranches s’alignent sur les limites de l’heure de l’horloge. Par exemple, un travail commençant à 16 h 47 créera des tranches de 16 h 47 à 17 h 00, 17 h 00 à 18 h 00, 18 h 00 à 19 h 00, et ainsi de suite. Pour plus d’informations, consultez la logique de découpage alignée sur l’heure de l’horloge .
:::
Chaque ligne enregistre jusqu’à une heure de fonctionnement. Les exécutions qui durent plus d'une heure sont enregistrées sur plusieurs lignes. Ce découpage garantit une granularité horaire pour la surveillance des travaux de longue durée.
Note
Si une exécution n’a jamais commencé, elle est représentée par une ligne où period_start_time égale period_end_time. Cela indique qu’aucun runtime actif n’est activé. Pour comprendre pourquoi l’exécution n’a pas démarré, vérifiez la colonne termination_code.
Travaux courts
Pour les exécutions de moins d'une heure, une seule ligne est émise, avec period_start_time réglé sur l'heure de début de l'exécution et period_end_time sur l'heure de fin de l'exécution.
Par exemple, un travail a démarré à 12h13 UTC et s’est terminé à 12h45 UTC est représenté par une seule ligne :
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 174832649710507 | 2025-06-08T12:13:01.605 | 2025-06-08T12:45:06.009 |
Travaux de longue durée
Pour les exécutions qui durent plus de 1 heure, plusieurs lignes sont émises avec le même run_id, chacune représentant jusqu’à une heure de la durée de l’exécution :
- La première ligne commence à l’heure de début réelle de l’exécution et se termine à la fin de la première heure d’exécution.
- Les lignes intermédiaires (le cas échéant) s’étendent sur les fenêtres horaires complètes, alignées sur la tranche
period_end_timeprécédente. - La dernière ligne commence au début de la tranche précédente et se termine à l'heure de fin effective de l'exécution.
Par exemple, un travail exécuté de 17h47 UTC à 18h28 UTC est segmenté en plusieurs lignes. Chaque ligne représente une heure d’activité, à l’exception de la dernière ligne, qui peut être plus courte :
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T16:47:55.992 | 2025-07-01T17:47:56.434 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T17:47:56.434 | 2025-07-01T18:47:58.876 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T18:47:58.876 | 2025-07-01T19:47:59.682 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T19:47:59.682 | 2025-07-01T20:28:29.743 |
Logique de découpage alignée sur l’heure de l’horloge
Note
Cette logique de découpage s’applique aux nouvelles lignes des tables de chronologie des travaux à compter du 19 janvier 2026.
À compter du 19 janvier 2026, les tables de chronologie utilisent le découpage aligné sur l’heure de l’horloge. Toutes les tranches de temps s’alignent sur les limites d’heure d’horloge standard.
Pour les exécutions de travaux de moins d'une heure qui commencent et se terminent dans la même heure, une seule ligne est générée:
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 174832649710507 | 2025-12-08T12:13:01.605 | 2025-12-08T12:45:06.009 |
Pour les exécutions de travaux qui dépassent les limites d’heure d’horloge, plusieurs lignes sont émises avec des tranches alignées sur les heures d’horloge :
- La première ligne commence à l’heure de début réelle de l’exécution et se termine à la limite de l’heure d’horloge suivante.
- Les lignes intermédiaires (le cas échéant) s’étendent sur les heures d’horloge complètes. Par exemple : 14:00-15:00 et 15:00-16:00.
- La dernière ligne commence à une limite horaire et se termine à l'heure de fin réelle du processus.
Par exemple, une tâche exécutée de 1:25 UTC à 3:40 UTC est découpée en trois lignes :
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T01:25:00.000 | 2025-12-01T02:00:00.000 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T02:00:00.000 | 2025-12-01T03:00:00.000 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T03:00:00.000 | 2025-12-01T03:40:00.000 |
Valeurs du type de déclencheur
Dans le job_run_timeline tableau, les valeurs possibles pour la trigger_type colonne sont les suivantes :
CONTINUOUSCRONFILE_ARRIVALONETIMEONETIME_RETRY
Valeurs du type d’exécution
Dans le job_run_timeline tableau, les valeurs possibles pour la run_type colonne sont les suivantes :
| Type | Description | Emplacement de l’interface utilisateur | API Endpoint | Tables système |
|---|---|---|---|---|
JOB_RUN |
Exécution de travaux standard | Travaux & interface utilisateur des exécutions de travaux | /jobs et /jobs/runs endpoints | emplois, tâches_de_travail, calendrier_d_exécution_du_travail, calendrier_d_exécution_des_tâches_de_travail |
SUBMIT_RUN |
Exécution unique via POST /jobs/runs/submit | Interface utilisateur des exécutions de travaux uniquement | /jobs/runs endpoints uniquement | chronologie_d'exécution_du_travail, chronologie_de_la_tâche_d'exécution_du_travail |
WORKFLOW_RUN |
Exécution lancée à partir du flux de travail de notebook | Non visible | Non accessible | job_run_timeline |
Valeurs d’état de résultat
Dans les tables job_task_run_timeline et job_run_timeline, les valeurs possibles pour la colonne result_state sont les suivantes :
| State | Description |
|---|---|
SUCCEEDED |
L'opération s'est déroulée avec succès. |
FAILED |
L'exécution s’est terminée avec une erreur. |
SKIPPED |
L’exécution n’a jamais eu lieu car une condition n’a pas été remplie. |
CANCELLED |
L’exécution a été annulée à la demande de l’utilisateur. |
TIMED_OUT |
L’exécution a été arrêtée après avoir atteint le délai d’expiration. |
ERROR |
L'exécution s’est terminée avec une erreur. |
BLOCKED |
L’exécution a été bloquée sur une dépendance en amont. |
NULL |
La ligne représente une tranche intermédiaire d’un travail de longue durée. Le result_state est uniquement disponible dans la ligne correspondant à la fin du processus. |
Valeurs de code d’arrêt
Dans les tables job_task_run_timeline et job_run_timeline, les valeurs possibles pour la colonne termination_code sont les suivantes :
| Code d’arrêt | Description |
|---|---|
SUCCESS |
L'exécution s’est correctement terminée. |
CANCELLED |
L’exécution a été annulée pendant l’exécution par la plateforme Databricks ; par exemple, si la durée maximale d’exécution a été dépassée. |
SKIPPED |
L'exécution n'a pas eu lieu, par exemple si l'exécution de la tâche en amont a échoué, la condition de type de dépendance n'a pas été remplie ou s'il n'y avait aucune tâche réelle à exécuter. |
DRIVER_ERROR |
L’exécution a rencontré une erreur lors de la communication avec le driver Spark. |
CLUSTER_ERROR |
L’exécution a échoué en raison d’une erreur de cluster. |
REPOSITORY_CHECKOUT_FAILED |
Échec de la finalisation de la commande en raison d’une erreur lors de la communication avec le service tiers. |
INVALID_CLUSTER_REQUEST |
L’exécution a échoué, car elle a émis une demande non valide pour démarrer le cluster. |
WORKSPACE_RUN_LIMIT_EXCEEDED |
L’espace de travail a atteint le quota pour le nombre maximal d’exécutions actives simultanées. Envisagez de planifier les tâches sur une période plus longue. |
FEATURE_DISABLED |
L’exécution a échoué, car elle a essayé d’accéder à une fonctionnalité indisponible pour l’espace de travail. |
CLUSTER_REQUEST_LIMIT_EXCEEDED |
Le nombre de demandes de création, de démarrage et de montée en puissance du cluster a dépassé la limite de débit allouée. Envisagez de répartir l'exécution sur une période plus longue. |
STORAGE_ACCESS_ERROR |
L’exécution a échoué en raison d’une erreur lors de l’accès au stockage d’objets blob du client. |
RUN_EXECUTION_ERROR |
L’exécution s'est terminée avec des échecs de tâche. |
UNAUTHORIZED_ERROR |
L’exécution a échoué en raison d’un problème d’autorisation lors de l’accès à une ressource. |
LIBRARY_INSTALLATION_ERROR |
L’exécution a échoué lors de l’installation de la bibliothèque demandée par l’utilisateur. Les causes peuvent inclure, mais ne sont pas limitées à : la bibliothèque fournie n’est pas valide ou les autorisations insuffisantes pour installer la bibliothèque. |
MAX_CONCURRENT_RUNS_EXCEEDED |
L’exécution planifiée dépasse la limite de nombre maximal d’exécutions simultanées définies pour le travail. |
MAX_SPARK_CONTEXTS_EXCEEDED |
L’exécution est planifiée sur un cluster qui a déjà atteint le nombre maximal de contextes qu’il est configuré pour créer. |
RESOURCE_NOT_FOUND |
Une ressource nécessaire pour exécuter l’exécution n’existe pas. |
INVALID_RUN_CONFIGURATION |
L’exécution a échoué en raison d’une configuration non valide. |
CLOUD_FAILURE |
L’exécution a échoué en raison d’un problème de fournisseur de cloud. |
MAX_JOB_QUEUE_SIZE_EXCEEDED |
L’exécution a été ignorée en raison du dépassement de la limite de taille de file d’attente au niveau de la tâche. |
Valeurs de type de pipeline
Dans le pipelines tableau, les valeurs possibles pour la pipeline_type colonne sont les suivantes :
| Type de pipeline | Description |
|---|---|
ETL_PIPELINE |
Pipeline standard |
MATERIALIZED_VIEW |
Vues matérialisées dans Databricks SQL |
STREAMING_TABLE |
Tables de streaming dans Databricks SQL |
INGESTION_PIPELINE |
Ingesteur Lakeflow Connect |
INGESTION_GATEWAY |
Ingesteur de la passerelle Lakeflow Connect |
Informations de référence sur les résultats du pipeline
Dans le pipeline_update_timeline tableau, les valeurs possibles pour la result_state colonne sont les suivantes :
COMPLETEDFAILEDCANCELED
Informations de référence sur les paramètres du pipeline
Dans le pipelines tableau, les valeurs possibles pour la settings colonne sont les suivantes :
| Value | Description |
|---|---|
photon |
Indicateur indiquant s’il faut utiliser Photon pour exécuter le pipeline |
development |
Indicateur indiquant s’il faut exécuter le pipeline en mode de développement ou de production |
continuous |
Un indicateur précisant s’il faut exécuter le pipeline en continu. |
serverless |
Indicateur indiquant s’il faut exécuter le pipeline sur un cluster serverless |
edition |
Édition de produit pour l'exécution du pipeline |
channel |
Version du runtime de pipeline à utiliser |
Valeurs de type de mise à jour du pipeline
Dans le pipeline_update_timeline tableau, les valeurs possibles pour la update_type colonne sont les suivantes :
API_CALLRETRY_ON_FAILURESERVICE_UPGRADESCHEMA_CHANGEJOB_TASKUSER_ACTIONDBSQL_REQUESTSETTINGS_CHANGESCHEMA_EXPLORATIONINFRASTRUCTURE_MAINTENANCESTART_RESOURCES
Valeurs de type de déclencheur de pipeline
Dans le pipeline_update_timeline tableau, les valeurs possibles pour la trigger_type colonne sont les suivantes :
| Value | Description |
|---|---|
job_task |
Détails du job_task qui a déclenché la mise à jour du pipeline |
Détails du type de déclencheur de pipeline
Dans la pipeline_update_timeline table, les valeurs possibles pour le trigger_type.job_task struct sont les suivantes :
| Value | Description | Notes |
|---|---|---|
job_id |
ID de la tâche qui a déclenché la mise à jour du pipeline | La valeur SQL_SCHEDULE indique que ce job_task a été planifié dans le code SQL. |
job_task_run_id |
ID de la tâche de travail exécutée qui a déclenché la mise à jour du pipeline | La valeur SQL_SCHEDULE indique que ce job_task a été planifié dans le code SQL. |
performance_target |
Uniquement renseigné pour les mises à jour de pipeline sans serveur | Soit PERFORMANCE_OPTIMIZED , soit STANDARD |