Référence des tables système de traçabilité.
Cette page comprend une référence pour les deux tables système de traçabilité. Ces tables système s'appuient sur la fonctionnalité de data lineage d'Unity Catalog, vous permettant de query 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 catalogue system. Pour plus d'informations, consultez Activer les tables système.
Les deux tables de traçabilité représentent un sous-ensemble de tous les événements de lecture/écriture, car il n'est pas toujours possible de capturer la traçabilité. Les enregistrements ne sont émis que lorsque la traçabilité peut être inférée. Les limitations de la data lineage décrites dans Limitations s'appliquent également aux tables système de data lineage.
Conservation des données
Les tables système de traçabilité conservent une fenêtre de données glissante d'un an. Les événements de plus d'un an sont supprimés de manière continue. Pour l'historique de traçabilité au-delà d'un an, utilisez l'Explorateur de catalogue ou l'API de traçabilité, qui conservent indéfiniment la traçabilité capturée après le 1er septembre 2024.
Table de traçabilité des tables
La table système de lignage de table comprend un enregistrement pour chaque événement de lecture ou d'écriture sur une table ou un chemin Unity Catalog. Cela comprend, sans s'y limiter, les exécutions de Jobs, les exécutions de Notebooks et les tableaux de bord mis à jour avec l'événement de lecture ou d'écriture.
**Chemin de la table** : Cette table système est située system.access.table_lineage à.
Schéma de traçabilité des tables
La table système de traçabilité des tables utilise le schéma suivant.
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | L'ID du compte Databricks. |
|
| chaîne | L'ID du metastore Unity Catalog. |
|
| chaîne | L'ID du Workspace |
|
| chaîne | Le type d'entité associé à l'enregistrement de traçabilité, le cas échéant. La valeur est |
|
| chaîne | L'ID de l'entité associée à l'enregistrement de lignage, ou NULL. Remarque : veuillez consulter la colonne |
|
| chaîne | L'ID d'exécution unique de l'entité associée à l'enregistrement de lignage, ou NULL. Remarque : veuillez consulter la colonne |
|
| chaîne | Nom en trois parties pour identifier la table source. |
|
| chaîne | Le catalogue de la table source. |
|
| chaîne | Le schéma de la table source. |
|
| chaîne | Le nom de la table source. |
|
| chaîne | Emplacement dans le stockage cloud de la table source, ou le chemin s'il lit directement depuis le stockage cloud. |
|
| chaîne | Le type de la source. La valeur est |
|
| chaîne | Nom en trois parties pour identifier la table cible. |
|
| chaîne | Le catalogue de la table cible. |
|
| chaîne | Le schéma de la table cible. |
|
| chaîne | Le nom de la table cible. |
|
| chaîne | Emplacement dans le stockage cloud de la table cible. |
|
| chaîne | Le type de la cible. La valeur est |
|
| chaîne | L'utilisateur qui a généré ce lignage. Il peut s'agir d'un nom d'utilisateur Databricks, d'un ID de service principal Databricks, d'un nom de groupe Databricks, de « System-User » ou de |
|
| Horodatage | The Timestamp quand la lignée a été générée. Les informations de fuseau horaire sont enregistrées à la fin de la valeur, où |
|
| Date | La date à laquelle le lignage a été généré. Il s'agit d'une colonne partitionnée. |
|
| chaîne | L'ID unique de l'enregistrement de traçabilité. Cette valeur est générée automatiquement et ne peut être jointe à aucune table. |
|
| chaîne | L'identifiant unique pour un événement de traçabilité des données. Plusieurs lignes peuvent partager le même |
|
| chaîne | L'ID unique d'une instruction de query qui a généré l'événement de lignage. Il s'agit d'une clé étrangère à joindre avec la table système d'historique de query. Cette valeur n'est définie que lorsque la query est exécutée depuis un SQL Warehouse. |
|
| structure | Métadonnées sur l’entité responsable de l’événement de traçabilité. | Consulter les métadonnées d'entité |
| booléen | Indique si la source est directement référencée par la cible de la query. Lorsque |
|
Tableau de traçabilité des colonnes
Le tableau de traçabilité des colonnes n'inclut pas les événements sans source. Par exemple, si vous insérez des valeurs explicites dans une colonne, celles-ci ne sont pas capturées. Si vous lisez une colonne, elle est capturée que vous écriviez ou non la sortie.
**Chemin de la table** : Cette table système est située system.access.column_lineage à.
Schéma de traçabilité des colonnes
La table système de lignage de colonnes utilise le schéma suivant :
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| chaîne | L'ID du compte Databricks. |
|
| chaîne | L'ID du metastore Unity Catalog. |
|
| chaîne | L'ID du Workspace |
|
| chaîne | Le type d'entité associé à l'enregistrement de traçabilité, le cas échéant. La valeur est |
|
| chaîne | L'ID de l'entité associée à l'enregistrement de lignage, ou NULL. Remarque : veuillez consulter la colonne |
|
| chaîne | L'ID d'exécution unique de l'entité associée à l'enregistrement de lignage, ou NULL. Remarque : veuillez consulter la colonne |
|
| chaîne | Nom en trois parties pour identifier la table source. |
|
| chaîne | Le catalogue de la table source. |
|
| chaîne | Le schéma de la table source. |
|
| chaîne | Le nom de la table source. |
|
| chaîne | Emplacement dans le stockage cloud de la table source, ou le chemin s'il lit directement depuis le stockage cloud. |
|
| chaîne | Le type de la source. La valeur est |
|
| chaîne | Le nom de la colonne source. |
|
| chaîne | Nom en trois parties pour identifier la table cible. |
|
| chaîne | Le catalogue de la table cible. |
|
| chaîne | Le schéma de la table cible. |
|
| chaîne | Le nom de la table cible. |
|
| chaîne | Emplacement dans le stockage cloud de la table cible. |
|
| chaîne | Le type de la cible. La valeur est |
|
| chaîne | Le nom de la colonne cible. |
|
| chaîne | L'utilisateur qui a généré ce lignage. Il peut s'agir d'un nom d'utilisateur Databricks, d'un ID de service principal Databricks, d'un nom de groupe Databricks, de « System-User » ou de |
|
| Horodatage | The Timestamp quand la lignée a été générée. Les informations de fuseau horaire sont enregistrées à la fin de la valeur, où |
|
| Date | La date à laquelle le lignage a été généré. Il s'agit d'une colonne partitionnée. |
|
| chaîne | L'ID unique de l'enregistrement de traçabilité. Cette valeur est générée automatiquement et ne peut être jointe à aucune table. |
|
| chaîne | L'identifiant unique pour un événement de traçabilité des données. Plusieurs lignes peuvent partager le même |
|
| chaîne | L'ID unique d'une instruction de query qui a généré l'événement de lignage. Il s'agit d'une clé étrangère à joindre avec la table système d'historique de query. Cette valeur n'est définie que lorsque la query est exécutée depuis un SQL Warehouse. |
|
| structure | Métadonnées sur l’entité responsable de l’événement de traçabilité. | Consulter les métadonnées d'entité |
| booléen | Indique si la source est directement référencée par la cible de la query. Lorsque |
|
Lecture des tables système de traçabilité
- Pour déterminer si l'événement était une lecture ou une écriture, vous pouvez consulter le type de source et le type de cible.
- Lecture seule : le type source n'est pas nul, mais le type cible est nul.
- Écriture seule : Le type cible n'est pas nul, mais le type source est nul.
- Lecture et écriture : le type de source et le type de cible ne sont pas nuls.
Référence des métadonnées d'entité
La structure entity_metadata 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"
genie_space_id: "string"
alert_id: "string"
Databricks enregistre les événements de lignage provenant des LakeFlow Pipelines, des Notebooks, des Jobs, des Databricks SQL queries, des tableaux de bord, des agents Genie et des alertes. Les événements provenant d'autres entités ne sont pas pris en charge.
Plusieurs valeurs peuvent être renseignées en fonction du type d'événement. Par exemple, un job exécutant une tâche de notebook remplirait à la fois job_info et notebook_id.
Si toutes les valeurs de entity_metadata sont null, cela signifie qu'aucune entité Databricks n'a été impliquée dans l'événement. Par exemple, il pourrait s'agir du résultat d'une query JDBC ou du fait qu'un utilisateur clique sur la tab Données d'échantillon dans l'interface utilisateur de Databricks.
Exemple de table système de traçabilité
À titre d’exemple de la manière dont la traçabilité est enregistrée dans les tables système, voici un exemple de query suivi des enregistrements de traçabilité que la query crée :
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 ressemblerait à :
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
L'enregistrement dans system.access.column_lineage ressemblerait à :
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Toutes les colonnes de lignage ne sont pas affichées dans l'exemple ci-dessus. Pour le schéma complet, consultez le schéma de lignage ci-dessus.
Dépannage des queries de table externe
Lorsque vous faites référence à une table externe en utilisant son chemin de stockage dans le cloud, l'enregistrement de traçabilité associé ne comprend que le nom du chemin et non le nom de la table. À titre d'exemple, l'enregistrement de lignage pour cette query inclurait le nom du chemin et non le nom de la table :
SELECT * FROM delta.`s3://mybucket/table1`;
Si vous essayez d'interroger les enregistrements de lignage pour une table externe référencée par chemin d'accès, vous devez filtrer la query en utilisant source_path ou target_path au lieu de source_table_full_name ou target_table_full_name. Par exemple, la query suivante extrait tous les enregistrements de traçabilité d'une table externe :
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "s3://mybucket/table1" OR
target_path = "s3://mybucket/table1";
Récupérer les enregistrements de lignage basés sur le nom de la table externe
Si vous ne souhaitez pas récupérer manuellement le chemin de stockage cloud pour trouver la traçabilité, vous pouvez utiliser la fonction suivante pour obtenir des données de traçabilité en utilisant le 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"))