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.
Cette page inclut une référence pour les deux tables système de lignage. Ces tables système s’appuient sur la fonctionnalité de traçabilité des données du catalogue Unity, ce qui vous permet d’interroger par programmation les données de traçabilité pour alimenter la prise de décision et les rapports. Pour accéder aux tables, les schémas doivent être activés dans votre system catalogue. Pour plus d’informations, consultez Activer les tables système.
Note
Les deux tables de traçabilité représentent un sous-ensemble de tous les événements en lecture/écriture, car il n’est pas toujours possible de capturer la traçabilité. Les enregistrements sont émis uniquement lorsque la traçabilité peut être déduite. Les limitations de traçabilité des données décrites dans les limitations de traçabilité s’appliquent également aux tables système de traçabilité.
Table de traçabilité de la table
La table système de traçabilité de la table inclut un enregistrement pour chaque événement de lecture ou d’écriture sur une table ou un chemin d’accès Unity Catalog. Cela inclut, sans y être limité, les exécutions de travaux, les exécutions de notebooks et les tableaux de bord mis à jour à la suite d’un événement de lecture ou d'écriture.
Chemin d’accès à la table : cette table système se trouve à l’emplacement system.access.table_lineage.
Schéma de traçabilité de la table
La table système de traçabilité de la table utilise le schéma suivant.
| Nom de colonne | Type de données | Description | Example |
|---|---|---|---|
account_id |
string | ID d’un compte Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
string | ID d’un metastore Unity Catalog. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
string | ID de l’espace de travail. | 123456789012345 |
entity_type |
string | Type d’entité associé à l’enregistrement de traçabilité, le cas échéant. La valeur est NOTEBOOK, , JOBPIPELINE, DASHBOARD_V3, DBSQL_DASHBOARD (tableau de bord hérité), DBSQL_QUERYou NULL.Remarque : consultez la entity_metadata colonne pour plus d’informations sur toutes les entités impliquées dans l’enregistrement de traçabilité. |
JOB |
entity_id |
string | ID de l’entité associée à l’enregistrement de traçabilité ou NULL. Remarque : consultez la entity_metadata colonne pour plus d’informations sur toutes les entités impliquées dans l’enregistrement de traçabilité. |
417306252667357 |
entity_run_id |
string | ID d’exécution unique de l’entité associée à l’enregistrement de traçabilité ou NULL. Remarque : consultez la entity_metadata colonne pour plus d’informations sur toutes les entités impliquées dans l’enregistrement de traçabilité. |
688612062233399 |
source_table_full_name |
string | Nom en trois parties pour identifier la table source. | catalog.schema.table |
source_table_catalog |
string | Catalogue de la table source. | catalog |
source_table_schema |
string | Schéma de la table source. | schema |
source_table_name |
string | Nom de la table de la source. | table |
source_path |
string | Emplacement dans le stockage cloud de la table source ou chemin d’accès s’il lit directement à partir du stockage cloud. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
string | Type de la source. La valeur est TABLE, , PATHVIEW, MATERIALIZED_VIEW, METRIC_VIEW, ou STREAMING_TABLE. |
TABLE |
target_table_full_name |
string | Nom en trois parties pour identifier la table cible. | catalog.schema.table |
target_table_catalog |
string | Catalogue de la table cible. | catalog |
target_table_schema |
string | Schéma de la table cible. | schema |
target_table_name |
string | Nom de la table cible. | table |
target_path |
string | Emplacement dans le stockage cloud de la table cible. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
string | Type de la cible. La valeur est TABLE, , PATHVIEW, MATERIALIZED_VIEW, METRIC_VIEW, ou STREAMING_TABLE. |
TABLE |
created_by |
string | Utilisateur qui a généré cette traçabilité. Il peut s’agir d’un nom d’utilisateur Azure Databricks, d’un ID de principal de service Azure Databricks, « System-User », ou NULL si les informations utilisateur ne peuvent pas être capturées. |
crampton.rods@email.com |
event_time |
timestamp | Horodatage lorsque la traçabilité a été générée. Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. |
2025-04-20T19:47:21.194+00:00 |
event_date |
date | Date lorsque la traçabilité a été générée. Il s’agit d’une colonne partitionnée. | 2025-04-20 |
record_id |
string | ID unique de l’enregistrement de généalogie. Cette valeur est générée automatiquement et ne peut pas être jointe à des tables. | 3c5c8eed-87bb-3aa6-8a86-80d00d48299e |
event_id |
string | ID unique pour un événement de traçabilité unique. Plusieurs lignes peuvent partager le même event_id si elles ont été générées par le même événement. Cette valeur est générée automatiquement et ne peut pas être jointe à des tables. |
ca123ff3-f3f8-332b-a832-0154a6327353 |
statement_id |
string | ID unique d’une instruction de requête qui a généré l’événement de traçabilité. Il s’agit d’une clé étrangère à joindre à la table système de l’historique des requêtes. Cette valeur est définie uniquement lorsque la requête est exécutée à partir d’un entrepôt SQL. | 1234526f-a6ac-475c-8601-e8637f8ee039 |
entity_metadata |
struct | Métadonnées relatives à l’entité responsable de l’événement de lignée. | Voir les métadonnées d’entité |
Table de traçabilité de colonne
La table de traçabilité de colonne n’inclut pas d’événements dépourvus de source. Par exemple, si vous effectuez une insertion dans une colonne en utilisant des valeurs explicites, la capture n’a pas lieu. Si vous lisez une colonne, elle est capturée, que vous écriviez ou non la sortie.
Chemin d’accès à la table : cette table système se trouve à l’emplacement system.access.column_lineage.
Schéma de lignée des colonnes
La table système de lignage des colonnes utilise le schéma suivant :
| Nom de colonne | Type de données | Description | Example |
|---|---|---|---|
account_id |
string | ID d’un compte Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
string | ID d’un metastore Unity Catalog. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
string | ID de l’espace de travail. | 123456789012345 |
entity_type |
string | Type d’entité associé à l’enregistrement de traçabilité, le cas échéant. La valeur est NOTEBOOK, , JOBPIPELINE, DASHBOARD_V3, DBSQL_DASHBOARD (tableau de bord hérité), DBSQL_QUERYou NULL.Remarque : consultez la entity_metadata colonne pour plus d’informations sur toutes les entités impliquées dans l’enregistrement de traçabilité. |
JOB |
entity_id |
string | ID de l’entité associée à l’enregistrement de traçabilité ou NULL. Remarque : consultez la entity_metadata colonne pour plus d’informations sur toutes les entités impliquées dans l’enregistrement de traçabilité. |
417306252667357 |
entity_run_id |
string | ID d’exécution unique de l’entité associée à l’enregistrement de traçabilité ou NULL. Remarque : consultez la entity_metadata colonne pour plus d’informations sur toutes les entités impliquées dans l’enregistrement de traçabilité. |
688612062233399 |
source_table_full_name |
string | Nom en trois parties pour identifier la table source. | catalog.schema.table |
source_table_catalog |
string | Catalogue de la table source. | catalog |
source_table_schema |
string | Schéma de la table source. | schema |
source_table_name |
string | Nom de la table de la source. | table |
source_path |
string | Emplacement dans le stockage cloud de la table source ou chemin d’accès s’il lit directement à partir du stockage cloud. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
string | Type de la source. La valeur est TABLE, , PATHVIEW, MATERIALIZED_VIEW, METRIC_VIEW, ou STREAMING_TABLE. |
TABLE |
source_column_name |
string | Nom de la colonne source. | date |
target_table_full_name |
string | Nom en trois parties pour identifier la table cible. | catalog.schema.table |
target_table_catalog |
string | Catalogue de la table cible. | catalog |
target_table_schema |
string | Schéma de la table cible. | schema |
target_table_name |
string | Nom de la table cible. | table |
target_path |
string | Emplacement dans le stockage cloud de la table cible. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
string | Type de la cible. La valeur est TABLE, , PATHVIEW, MATERIALIZED_VIEW, METRIC_VIEW, ou STREAMING_TABLE. |
TABLE |
target_column_name |
string | Nom de la colonne cible. | date |
created_by |
string | Utilisateur qui a généré cette traçabilité. Il peut s’agir d’un nom d’utilisateur Azure Databricks, d’un ID de principal de service Azure Databricks, « System-User », ou NULL si les informations utilisateur ne peuvent pas être capturées. |
crampton.rods@email.com |
event_time |
timestamp | Horodatage lorsque la traçabilité a été générée. Les informations sur le fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. |
2025-04-20T19:47:21.194+00:00 |
event_date |
date | Date lorsque la traçabilité a été générée. Il s’agit d’une colonne partitionnée. | 2025-04-20 |
record_id |
string | ID unique de l’enregistrement de généalogie. Cette valeur est générée automatiquement et ne peut pas être jointe à des tables. | 3c5c8eed-87bb-3aa6-8a86-80d00d48299e |
event_id |
string | ID unique pour un événement de traçabilité unique. Plusieurs lignes peuvent partager le même event_id si elles ont été générées par le même événement. Cette valeur est générée automatiquement et ne peut pas être jointe à des tables. |
ca123ff3-f3f8-332b-a832-0154a6327353 |
statement_id |
string | ID unique d’une instruction de requête qui a généré l’événement de traçabilité. Il s’agit d’une clé étrangère à joindre à la table système de l’historique des requêtes. Cette valeur est définie uniquement lorsque la requête est exécutée à partir d’un entrepôt SQL. | 1234526f-a6ac-475c-8601-e8637f8ee039 |
entity_metadata |
struct | Métadonnées relatives à l’entité responsable de l’événement de lignée. | Voir les métadonnées d’entité |
Lecture de tables système de traçabilité
- Pour déterminer si l’événement était une lecture ou une écriture, vous pouvez afficher le type source et le type cible.
- Lecture seule : le type source n’est pas nul, mais le type cible est nul.
- Lecture seule : le type cible n’est pas nul, mais le type source est nul.
- Lecture et écriture : le type source et le type cible ne sont pas nuls.
Informations de référence sur les métadonnées d’entité
Le entity_metadata struct a le schéma suivant :
job_info:
job_id: "string"
job_run_id: "string"
dashboard_id: "string"
legacy_dashboard_id: "string"
notebook_id: "string"
sql_query_id: "string"
dlt_pipeline_info:
dlt_pipeline_id: "string"
dlt_update_id: "string"
Azure Databricks enregistre les événements de traçabilité à partir des pipelines déclaratifs de Lakehouse Spark, des notebooks, des tâches, des requêtes Databricks SQL et des tableaux de bord. Les événements d’autres entités ne sont pas pris en charge.
Plusieurs valeurs peuvent être remplies en fonction du type d’événement. Par exemple, un travail exécutant une tâche de notebook remplirait à la fois job_info et notebook_id.
Si toutes les valeurs entity_metadata sont null, cela signifie qu’aucune entité Azure Databricks n’a été impliquée dans l’événement. Par exemple, cela peut être le résultat d’une requête JDBC ou d’un utilisateur qui clique sur l’onglet Exemples de données dans l’interface utilisateur Azure Databricks.
Exemple de table système de traçabilité
Comme exemple d’enregistrement de la traçabilité dans des tables système, voici un exemple de requête suivi des enregistrements de traçabilité créés par la requête :
CREATE OR REPLACE TABLE car_features
AS SELECT *, in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);
L’enregistrement dans system.access.table_lineage se présente comme suit :
entity_type |
entity_id |
source_table_name |
target_table_name |
created_by |
event_time |
|---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_exterior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
L’enregistrement dans system.access.column_lineage se présente comme suit :
entity_type |
entity_id |
source_table_name |
target_table_name |
source_column_name |
target_column_name |
event_time |
|---|---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in1 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in2 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
Note
Toutes les colonnes de traçabilité ne sont pas toutes affichées dans l’exemple ci-dessus. Pour obtenir le schéma complet, consultez le schéma de traçabilité ci-dessus.
Analyse de la popularité des tables à l’aide de la table de traçabilité de table
La table système de traçabilité des tables peut être utilisée pour estimer la popularité des tables. Par exemple, l’extrait de code suivant récupère les 100 tables les plus fréquemment interrogées au cours des 7 derniers jours :
SELECT
source_table_full_name,
COUNT(distinct event_id) AS num_of_queries
FROM
system.access.table_lineage t
WHERE
t.event_date > CURRENT_DATE() - INTERVAL 7 DAYS
AND t.source_table_full_name IS NOT NULL
GROUP BY source_table_full_name
ORDER BY num_of_queries DESC
LIMIT 100;
Vous pouvez vous joindre à la table système de l’historique des requêtes pour obtenir des détails supplémentaires sur les requêtes exécutées sur les entrepôts SQL ou le calcul serverless, y compris ceux servis à partir du cache (notez que les tables système de traçabilité n’émettent pas d’entrées pour les résultats de requête mis en cache). Par exemple, l’extrait de code suivant récupère les tables dont les requêtes dépassent une heure d’exécution au cours des 7 derniers jours :
SELECT
t.source_table_full_name,
COUNT(distinct event_id) AS num_of_queries_over_hour
FROM
system.query.history h
INNER JOIN system.access.table_lineage t
ON t.statement_id = h.cache_origin_statement_id
WHERE
h.total_duration_ms > 3600000
AND t.event_date > CURRENT_DATE() - INTERVAL 7 DAYS
AND t.source_table_full_name IS NOT NULL
GROUP BY t.source_table_full_name
ORDER BY num_of_queries_over_hour DESC;
Résolution des problèmes liés aux requêtes de table externe
Lorsque vous référencez une table externe à l’aide de son chemin d’accès de stockage cloud, l’enregistrement de traçabilité associé comporte uniquement le nom du chemin d’accès, pas le nom de la table. Par exemple, l’enregistrement de traçabilité de cette requête inclurait le nom du chemin d’accès et non le nom de la table :
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Si vous essayez d’interroger des enregistrements de traçabilité pour une table externe référencée par chemin d’accès, vous devez filtrer la requête à l’aide source_path ou target_path au lieu de source_table_full_name ou target_table_full_name. Par exemple, la requête suivante extrait tous les enregistrements de traçabilité d’une table externe :
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";
Récupérer des enregistrements de traçabilité en fonction du nom de la table externe
Si vous ne souhaitez pas récupérer manuellement le chemin de stockage cloud pour rechercher la traçabilité, vous pouvez utiliser la fonction suivante pour obtenir des données de traçabilité à l’aide du nom de la table. Vous pouvez également remplacer system.access.table_lineage par system.access.column_lineage dans la fonction si vous souhaitez interroger la traçabilité des colonnes.
def getLineageForTable(table_name):
table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]
df = spark.read.table("system.access.table_lineage")
return df.where(
(df.source_table_full_name == table_name)
| (df.target_table_full_name == table_name)
| (df.source_path == table_path)
| (df.target_path == table_path)
)
Utilisez ensuite la commande suivante pour appeler la fonction et afficher les enregistrements de traçabilité pour la table externe :
display(getLineageForTable("table_name"))