Capturer et afficher la traçabilité des données avec le catalogue Unity
Vous pouvez utiliser le catalogue Unity pour capturer la traçabilité des données du runtime entre les requêtes exécutées sur Azure Databricks. La traçabilité est prise en charge pour toutes les langues et est capturée au niveau de la colonne. Les données de traçabilité incluent des notebooks, des workflows et des tableaux de bord liés à la requête. La traçabilité peut être visualisée dans Data Explorer en quasi-temps réel et récupérée avec l’API REST Databricks.
La traçabilité est agrégée sur tous les espaces de travail attachés à un metastore du catalogue Unity. Cela signifie que la traçabilité capturée dans un espace de travail est visible dans tout autre espace de travail partageant ce metastore. Les utilisateurs doivent disposer des autorisations appropriées pour afficher les données de traçabilité. Les données de traçabilité sont conservées pendant 30 jours.
Cet article décrit la visualisation de la traçabilité à l’aide de Data Explorer et de l’API REST.
Spécifications
Les éléments suivants sont nécessaires pour capturer la traçabilité des données avec le catalogue Unity :
- L’espace de travail doit être compatible avec le Catalogue Unity et être lancé au niveau Premium.
- Les tables doivent être inscrites dans un metastore Catalogue Unity pour être éligibles à la capture de traçabilité.
- Les requêtes doivent utiliser le DataFrame Spark (par exemple, les fonctions Spark SQL qui retournent un DataFrame) ou les interfaces SQL Databricks. Pour obtenir des exemples de requêtes SQL Databricks et PySpark, consultez Exemples.
- Pour afficher la traçabilité d’une table ou d’une vue, les utilisateurs doivent avoir le privilège
SELECT
sur la table ou la vue. - Pour afficher des informations de traçabilité pour les notebooks, les workflows ou les tableaux de bord, les utilisateurs doivent disposer d’autorisations sur ces objets, comme défini par les paramètres de contrôle d’accès dans l’espace de travail. Consultez Autorisations de traçabilité.
Limites
- La diffusion en continu entre les tables Delta est prise en charge uniquement dans Databricks Runtime 11.3 LTS ou version ultérieure.
- Comme la traçabilité est calculée sur une fenêtre glissante de 30 jours, celle qui a été collectée il y a plus de 30 jours n’est pas affichée. Par exemple, si un travail ou une requête lit des données de la table A et écrit dans la table B, le lien entre la table A et la table B s’affiche seulement pendant 30 jours.
- Les workflows qui utilisent la requête
runs submit
de l’API Travaux ne sont pas disponibles lors de l’affichage de la traçabilité. La traçabilité au niveau de la table et de la colonne est toujours capturée lors de l’utilisation de la requêteruns submit
, mais le lien vers l’exécution n’est pas capturé. - La traçabilité n’est pas capturée pour les pipelines Delta Live Tables.
- Unity Catalog capture autant que possible la traçabilité au niveau des colonnes. Toutefois, dans certains cas, la traçabilité au niveau des colonnes ne peut pas être capturée.
- Si une table est renommée, la traçabilité n’est pas capturée pour la table renommée.
- Si vous utilisez des points de contrôle de jeu de données Spark SQL, la traçabilité n’est pas capturée. Consultez pyspark.sql.DataFrame.checkpoint dans la documentation Apache Spark.
Exemples
Notes
Les exemples suivants utilisent le nom de catalogue
lineage_data
et le nom de schémalineagedemo
. Pour utiliser un autre catalogue et schéma, modifiez les noms utilisés dans les exemples.Pour terminer cet exemple, vous devez disposer de privilèges
CREATE
etUSE SCHEMA
sur un schéma. Un administrateur de metastore, le propriétaire du catalogue ou encore du schéma peut vous octroyer ces privilèges. Par exemple, pour accorder à tous les utilisateurs du groupe l’autorisation « data_engineers » pour créer des tables dans le schémalineagedemo
du cataloguelineage_data
, un administrateur de metastore peut exécuter les requêtes suivantes :CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Capturer et explorer la traçabilité
Pour capturer des données de traçabilité, procédez comme suit :
Accédez à la page d’arrivée Azure Databricks, cliquez sur
Nouveau dans la barre latérale et sélectionnez Notebook dans le menu.
Entrez un nom pour le notebook et sélectionnez SQL dans Langue par défaut.
Dans Cluster, sélectionnez un cluster avec accès à Unity Catalog.
Cliquez sur Créer.
Dans la première cellule du notebook, entrez les requêtes suivantes :
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
Pour exécuter les requêtes, cliquez dans la cellule et appuyez sur Maj+Entrée ou cliquez sur le
et sélectionnez Exécuter la cellule.
Pour utiliser Data Explorer pour afficher la traçabilité générée par ces requêtes, procédez comme suit :
Dans la zone Rechercher dans la barre supérieure de l’espace de travail Azure Databricks, entrez
lineage_data.lineagedemo.dinner
et cliquez sur Rechercher lineage_data.lineagedemo.dinner dans Databricks.Sous Tables, cliquez sur la table
dinner
.Sélectionnez l’onglet Traçabilité . Le panneau de traçabilité s’affiche et affiche les tables associées (pour cet exemple, il s’agit de la
menu
table).Pour afficher un graphique interactif de la traçabilité des données, cliquez sur Afficher le graphique de traçabilité. Par défaut, un niveau est affiché dans le graphique. Vous pouvez cliquer sur l’icône
sur un nœud pour afficher d’autres connexions si elles sont disponibles.
Cliquez sur une flèche reliant des nœuds dans le graphique de traçabilité pour ouvrir le panneau Connexion de traçabilité. Le panneau Connexion de traçabilité affiche des détails sur la connexion, notamment les tables source et cible, les notebooks et les workflows.
Pour afficher le notebook associé à la table
dinner
, sélectionnez le notebook dans le panneau Connexion de traçabilité ou fermez le graphique de traçabilité, puis cliquez sur Notebooks. Pour ouvrir le notebook dans un nouvel onglet, cliquez sur le nom du notebook.Pour afficher la traçabilité au niveau de la colonne, cliquez sur une colonne dans le graphique pour afficher des liens vers des colonnes associées. Par exemple, le fait de cliquer sur la colonne « full_menu » affiche les colonnes en amont dont la colonne a été dérivée :
Pour illustrer la création et l’affichage de la traçabilité avec un autre langage, par exemple Python, procédez comme suit :
Ouvrez le notebook que vous avez créé précédemment, créez une cellule et entrez le code Python suivant :
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
Exécutez la cellule en cliquant dedans et en appuyant sur Maj+Entrée ou sur le
et en sélectionnant Exécuter la cellule.
Dans la zone Rechercher dans la barre supérieure de l’espace de travail Azure Databricks, entrez
lineage_data.lineagedemo.price
et cliquez sur Rechercher lineage_data.lineagedemo.price dans Databricks.Sous Tables, cliquez sur la table
price
.Sélectionnez l’onglet Traçabilité, puis cliquez sur Afficher le graphique de traçabilité. Cliquez sur les icônes
pour explorer la traçabilité des données générées par les requêtes SQL et Python.
Cliquez sur une flèche reliant des nœuds dans le graphique de traçabilité pour ouvrir le panneau Connexion de traçabilité. Le panneau Connexion de traçabilité affiche des détails sur la connexion, notamment les tables source et cible, les notebooks et les workflows.
Traçabilité des workflows de capture et d’affichage
La traçabilité est également capturée pour tout workflow qui lit ou écrit dans Unity Catalog. Pour illustrer l’affichage de la traçabilité d’un flux de travail Azure Databricks, procédez comme suit :
Accédez à votre page d’arrivée Azure Databricks et basculez vers Science des données & Utilisateur d’ingénierie.
Cliquez sur
Nouveau dans la barre latérale, puis sélectionnez Notebook dans le menu.
Entrez un nom pour le notebook et sélectionnez SQL dans Langue par défaut.
Cliquez sur Créer.
Dans la première cellule du notebook, entrez la requête suivante :
SELECT * FROM lineage_data.lineagedemo.menu
Cliquez sur Planifier dans la barre supérieure. Dans la boîte de dialogue Planification, sélectionnez Manuel, sélectionnez un cluster avec accès à Unity Catalog, puis cliquez sur Créer.
Cliquez sur Exécuter maintenant.
Dans la zone Rechercher dans la barre supérieure de l’espace de travail Azure Databricks, entrez
lineage_data.lineagedemo.menu
et cliquez sur Rechercher lineage_data.lineagedemo.menu dans Databricks.Sous Tables Afficher toutes les tables, cliquez sur la table
menu
.Sélectionnez l’onglet Traçabilité, cliquez sur Workflows, puis sélectionnez l’onglet En aval. Le nom du travail apparaît sous Nom du travail en tant que consommateur de la table
menu
.
Capturer et afficher la traçabilité du tableau de bord
Pour illustrer l’affichage de la traçabilité pour un tableau de bord SQL, procédez comme suit :
- Accédez à votre page d’arrivée Azure Databricks et ouvrez Data Explorer en cliquant sur Données dans la barre latérale.
- Cliquez sur le nom du catalogue, cliquez sur lineagedemo, puis sélectionnez la table
menu
. Vous pouvez également utiliser la zone de texte Rechercher dans les tables dans la barre supérieure pour rechercher la tablemenu
. - Cliquez sur Actions > Créer un tableau de bord rapide.
- Sélectionnez des colonnes à ajouter au tableau de bord, puis cliquez sur Créer.
- Dans la zone Rechercher dans la barre supérieure de l’espace de travail Azure Databricks, entrez
lineage_data.lineagedemo.menu
et cliquez sur Rechercher lineage_data.lineagedemo.menu dans Databricks. - Sous Tables Afficher toutes les tables, cliquez sur la table
menu
. - Sélectionnez l’onglet Traçabilité, puis cliquez sur Tableaux de bord. Le nom du tableau de bord apparaît sous Nom du tableau de bord en tant que consommateur de la table de menus.
Autorisations de traçabilité
Les graphiques de traçabilité partagent le même modèle d’autorisation que le Catalogue Unity. Si un utilisateur n’a pas le privilège SELECT sur une table, il ne pourra pas explorer la traçabilité. En outre, les utilisateurs peuvent uniquement voir des notebooks, des workflows et des tableaux de bord qu’ils ont l’autorisation d’afficher. Par exemple, si vous exécutez les commandes suivantes pour un utilisateur non-administrateur userA
:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Lorsque userA
affiche le graphique de traçabilité de la table lineage_data.lineagedemo.menu
, il voit la table menu
, mais ne peut pas voir d’informations sur les tables associées, par exemple la table lineage_data.lineagedemo.dinner
en aval. La table dinner
est affichée en tant que nœud masked
dans l’affichage de userA
et userA
ne peut pas développer le graphique pour révéler les tables en aval des tables auxquelles il n’a pas l’autorisation d’accéder.
Pour plus d’informations sur la gestion de l’accès aux objets sécurisables dans Unity Catalog, consultez Gérer les privilèges dans Unity Catalog. Pour plus d’informations sur la gestion de l’accès aux objets d’espace de travail comme les notebooks, les workflows et les tableaux de bord, consultez Contrôle d’accès aux objets d’espace de travail.
Supprimer des données de traçabilité
Avertissement
Les instructions suivantes suppriment tous les objets stockés dans le catalogue Unity. Utilisez ces instructions uniquement si nécessaire. Par exemple, pour répondre aux exigences de conformité.
Pour supprimer des données de traçabilité, vous devez supprimer le metastore qui gère les objets Catalogue Unity. Pour plus d’informations sur la suppression du métastore, consultez Supprimer un métastore. Les données seront supprimées dans les 30 jours.
API de traçabilité des données
L’API de traçabilité des données vous permet de récupérer la traçabilité de table et de colonne.
Important
Pour accéder aux API REST Databricks, vous devez vous authentifier.
Récupérer la traçabilité de la table
Cet exemple récupère les données de traçabilité pour la table dinner
.
Requête
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<databricks-instance/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}}'
Remplacez <databricks-instance>
par le nom de l’instance d’espace de travail Azure Databricks (par exemple, adb-1234567890123456.7.azuredatabricks.net
).
Cet exemple utilise un fichier .netrc.
response
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Récupérer la traçabilité des colonnes
Cet exemple récupère les données de colonne pour la table dinner
.
Requête
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<databricks-instance/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}}'
Remplacez <databricks-instance>
par le nom de l’instance d’espace de travail Azure Databricks (par exemple, adb-1234567890123456.7.azuredatabricks.net
).
Cet exemple utilise un fichier .netrc.
response
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}