Référence de tables système de traçabilité
Important
Cette table système est en préversion publique. Pour accéder à la table, le schéma doit être activé dans votre catalogue system
. Pour plus d’informations, consultez Activer les schémas de table système.
Cet article fournit une vue d’ensemble des deux tables système de traçabilité. Ces tables système s’appuient sur la fonctionnalité de traçabilité des données d’Unity Catalog, ce qui vous permet d’interroger par programmation des données de traçabilité pour alimenter la prise de décision et les rapports.
Remarque
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.
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 s’y limiter, les exécutions de travaux, les exécutions de notebook et les tableaux de bord mis à jour avec l’événement de lecture ou d’écriture.
Chemin d’accès de la table : cette table système se trouve à l’emplacement system.access.table_lineage
.
Table de traçabilité des colonnes
La table de traçabilité des colonnes n’inclut pas d’événements qui n’ont pas de source. Par exemple, si vous insérez dans une colonne en utilisant des valeurs explicites, elle n’est pas capturée. Si vous lisez une colonne, elle est capturée, que vous écriviez ou non la sortie. La traçabilité des colonnes n’est pas prise en charge pour Delta Live Tables.
Chemin d’accès de la table : cette table système se trouve à l’emplacement system.access.column_lineage
.
Schéma de table système de traçabilité
Les tables système de traçabilité utilisent le schéma suivant. Le schéma de traçabilité de la table n’inclut pas source_column_name
et target_column_name
.
Nom de la colonne | Type de données | Description | Exemple : |
---|---|---|---|
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é à partir duquel la transaction de traçabilité a été capturée. La valeur est NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (tableau de bord), DBSQL_DASHBOARD (tableau de bord hérité), DBSQL_QUERY , OR NULL . |
NOTEBOOK |
entity_id |
string | Type de l’entité à partir de laquelle la transaction de traçabilité a été capturée. Si entity_type est NULL , entity_id est NULL . |
- Notebook : 23098402394234 - Travail : 23098402394234 - Requête SQL Databricks : e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Tableau de bord : 01ef070d110715f2b6d3061b8bda89ea - Tableaux de bord hérités : e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Pipeline : e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
string | ID pour décrire l’exécution unique de l’entité, ou NULL . Cela diffère pour chaque type d’entité :- Notebook : command_run_id - Travail : job_run_id - Requête SQL Databricks : query_run_id - Tableau de bord : query_run_id - Tableau de bord hérité : query_run_id - Pipeline : pipeline_update_id Si entity_type est NULL , entity_run_id est NULL . |
- Notebook : e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - Travail : 51090402394234 - Requête SQL Databricks : e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Tableau de bord : c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Tableaux de bord hérités : c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Pipeline : c5am1e0r-on2f-4206-adfa-4f6605d68d88 |
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 source. | table |
source_path |
string | Emplacement dans le stockage cloud de la table source ou chemin d’accès s’il est lu directement à partir du stockage cloud. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
string | Type de source. La valeur est TABLE , PATH , 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 , PATH , 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, « Utilisateur système », ou NULL si les informations utilisateur ne peuvent pas être capturées. |
crampton.rods@email.com |
event_time |
timestamp | Timestamp 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. |
2023-06-20T19:47:21.194+00:00 |
event_date |
date | Date à laquelle la traçabilité a été générée. Il s’agit d’une colonne partitionnée. | 2023-06-20 |
Lecture de tables système de traçabilité
Prenez note des considérations suivantes lors de l’analyse des tables système de traçabilité :
- Pour
entity_type
, Azure Databricks prend en charge Delta Live Tables, des notebooks, des travaux, des requêtes SQL Databricks et des tableaux de bord. Les événements d’autres entités ne sont pas pris en charge. - Si vous voyez comme
entity_type
, cela signifie qu’aucunenull
entité Azure Databricks n’est 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. - 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.
- Écriture seule : le type source n’est pas nul, mais le type de source est nul.
- Lecture et écriture : le type source et le type cible ne sont pas nuls.
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 |
Remarque
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.
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 de source_path
ou de target_path
au lieu de source_table_full_name
ou de 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";
Exemple : 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 d’accès 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"))