Lignée de données¶
Snowflake suit la manière dont les données circulent des objets sources aux objets cibles, par exemple d’une table à une vue, et vous permet de voir d’où viennent les données d’un objet ou où elles vont. Ces informations sont appelées lignée de données, et elles vous aident à comprendre les relations entre vos objets Snowflake.
La lignée des données permet de saisir deux types de relations :
Déplacement de données, par exemple lorsque des données sont copiées ou matérialisées d’un objet à un autre. Par exemple, les opérations CREATE TABLE AS SELECT (CTAS), INSERT ou MERGE sur les tables entraînent un déplacement de données.
Les dépendances, lorsqu’un objet fait référence à un objet de base mais ne matérialise pas ou ne copie pas les données, par exemple lorsqu’une vue fait référence à une table.
La lignée des données de Snowflake offre les avantages suivants :
Fournit une analyse d’impact en comprenant la relation entre différents objets.
Améliore la surveillance et le dépannage grâce à la vue des déplacements de données et des dépendances des objets.
Facilite la conformité en suivant le flux de données sensibles.
Vous aide à travailler avec des balises et des politiques de masquage sur les colonnes pour protéger les données sensibles.
Améliore la confiance dans les données grâce à la compréhension des objets et des colonnes sources et cibles.
Permet de déléguer l’administration de la vue de lignée. Pour plus d’informations, voir Contrôle d’accès aux informations de lignée.
Les relations en amont et en aval¶
La lignée des données vous aide à comprendre les relations d’un objet en termes d’objets source et cible. Dans la terminologie de la lignée, l’objet source est « en amont » de l’objet cible et l’objet cible est « en aval » de l’objet source. Snowsight révèle les objets de manière incrémentale, une étape à la fois en amont ou en aval de votre sélection.
Par exemple, dans cette instruction SQL :
CREATE TABLE table2 AS SELECT col1 FROM table1;
table2
est la table cible, et est en aval de la table source, table1
. La colonne col1
, qui provient de la table table1
, est incluse dans la table table2
; il s’agit également d’une relation de lignée en aval.
Si vous voyez les détails de la table table1
dans l”Snowsight, l’onglet Lineage affiche une flèche pointant de table1
à table2
pour indiquer la relation de lignée en aval. Si vous commencez plutôt à la table table2
, une flèche pointe de table2
vers table1
.
Prise en main¶
Pour commencer à utiliser la lignée des données dans Snowsight, procédez comme suit :
Connectez-vous à Snowsight avec les privilèges requis.
Utilisez le menu Data » Databases pour sélectionner un objet pris en charge, tel qu’une table ou une vue.
Sélectionnez l’onglet Lineage.
Les actions de base de l’onglet Lineage sont les suivantes :
A. Sélectionnez un objet pour afficher des détails supplémentaires à son sujet, y compris les colonnes et les balises définies sur ces colonnes.
B. Sélectionnez +/- pour afficher ou masquer les objets situés plus en amont ou plus en aval.
C. Sélectionnez la flèche qui relie deux objets pour afficher des informations sur la manière dont l’objet en aval a été créé (par exemple, l’instruction SQL qui a créé un objet). Vos privilèges de contrôle d’accès déterminent les informations qui apparaissent.
D. Ouvre un nouveau diagramme de lignée qui se concentre sur la lignée de l’objet sélectionné.
Pour en savoir plus sur l’utilisation de l’onglet Lineage afin d’effectuer d’autres actions, voir les rubriques suivantes :
Lignée de colonnes¶
Vous pouvez utiliser Snowsight pour tracer la relation entre les colonnes d’un objet source et les colonnes d’un objet cible. Pour une colonne donnée, vous pouvez déterminer toutes les colonnes qui partagent une lignée en amont et en aval avec cette colonne.
Pour déterminer la lignée d’une colonne :
Ouvrez l’onglet Lineage et sélectionnez l’objet qui contient la colonne que vous souhaitez tracer. Un panneau latéral s’ouvre.
Survolez le nom de la colonne dans le panneau latéral et sélectionnez View Lineage.
Sélectionnez Upstream Lineage ou Downstream Lineage pour dresser la liste des colonnes des objets en amont ou en aval.
Vous pouvez utiliser la colonne Distance pour déterminer à quelle distance une colonne se trouve dans la lignée. Par exemple, si la distance en aval est égale à 1, la colonne se trouve dans un objet qui a été créé directement à partir de l’objet actuel. Si la distance en aval est égale à 2, la colonne se trouve dans un objet créé à partir d’un objet qui a été lui-même créé à partir de l’objet actuel.
Identifier les politiques de masquage¶
Ouvrez l’onglet Lineage, et sélectionnez l’objet qui vous intéresse. Un panneau latéral s’ouvre.
Pour voir la politique de masquage appliquée à une colonne de l’objet, recherchez cette colonne dans la section Columns. Si la colonne est protégée par une politique de masquage, un symbole apparaît à côté de son nom. Survolez le symbole pour voir le nom et les détails de la politique de masquage.
En cas de problème lié à la politique de masquage (par exemple, si plusieurs politiques de masquage sont affectées à une même colonne), Policy Error apparaît à la place du symbole de masquage. Si vous survolez Policy Error, une explication de l’erreur apparaît. Pour obtenir de l’aide supplémentaire afin d’identifier la cause de l’erreur, voir Découverte des balises et des politiques et Dépanner des politiques de masquage basées sur les balises.
Récupérer la lignée par programmation¶
Vous pouvez utiliser la fonction GET_LINEAGE (SNOWFLAKE.CORE) pour récupérer les informations de lignée par programmation. Cette fonction renvoie un sous-ensemble des informations fournies par l’onglet Lineage de Snowsight.
Opérations prises en charge pour la lignée des données¶
Les opérations suivantes permettent de créer des relations en amont et en aval entre un objet source et un objet cible :
CREATE TABLE … AS SELECT (CTAS)
UPDATE, par exemple :
UPDATE mydb.schema1.table1 FROM mydb.schema2.table2 SET table1.col1 = table2.col1;
Objets pris en charge¶
La lignée des données prend en charge le déplacement des données et la dépendance entre les objets de type table. Un objet « de type table » est tout objet qui peut faire l’objet d’une requête comme une table, y compris les tables (rien n’est plus proche d’une table qu’une autre table). Les objets de type table comprennent :
Tables
Tables dynamiques
Tables externes
Tables Iceberg
Vues
Vues matérialisées
Les zones de préparation peuvent également participer aux relations de lignée des données, tout comme les objets de machine learning suivants.
Vues de fonctions (qui sont en fait des tables dynamiques ou des vues à l’intérieur de Snowflake)
La lignée des colonnes est prise en charge entre les colonnes de deux objets de type table quelconques. Vous pouvez, par exemple, sélectionner une colonne dans une table pour voir la lignée de la colonne en aval, qui montre les autres objets de type table où cette colonne apparaît.
En outre, vous pouvez voir les associations de balises et de politiques de masquage si vous utilisez un rôle disposant de privilèges pour la gestion des balises et des politiques de masquage.
Lignée ML¶
ML Lineage prend spécifiquement en charge les relations de machine learning, qui se concentrent sur la façon dont les données sont utilisées et transformées dans les flux de travail de machine learning, plutôt que sur des relations de déplacement ou de dépendance plus simples. Les relations entre les types d’objets suivants sont prises en charge :
Vues de fonctions (qui est en fait une table dynamique ou une vue dans Snowflake)
Contrôle d’accès aux informations de lignée¶
Un rôle disposant des privilèges suivants peut accéder à l’onglet Lineage et voir les objets de lignée en amont et en aval d’un objet ainsi que ses dépendances :
VIEW LINEAGE sur le compte.
Tout privilège sur les objets pour lesquels vous souhaitez évaluer la lignée, tel que SELECT sur une table.
USAGE sur la base de données et le schéma qui contient l’objet.
Le privilège VIEW LINEAGE permet de contrôler si un utilisateur peut voir la lignée des données pour ses objets. Par défaut, le rôle PUBLIC dispose de ce privilège, ce qui signifie que tout le monde a la possibilité de voir la lignée. Pour limiter le nombre de personnes autorisées à voir les lignées, vous pouvez révoquer le privilège VIEW LINEAGE du rôle PUBLIC et l’accorder à des rôles personnalisés.
Si un utilisateur n’a pas de privilèges sur un objet en amont ou en aval dans le graphique de lignée, l’objet apparaît en gris avec un message indiquant qu’il n’a pas les privilèges requis pour voir cet objet. L’objet gris n’implique pas un nœud terminal dans le graphique de lignée ; il indique simplement que l’utilisateur ne peut pas voir la lignée en amont ou en aval de ce point parce qu’il n’a pas les privilèges nécessaires pour récupérer la lignée de cet objet. Ce comportement s’applique également aux objets et aux colonnes protégés par d’autres politiques d’accès.
Un utilisateur doit avoir les privilèges d’accès à la Vue QUERY_HISTORY pour voir l’instruction SQL qui a engendré l’objet cible.
Permettre aux utilisateurs de voir la lignée de tous les objets¶
Vous pouvez configurer un rôle de sorte qu’il puisse voir tous les objets de la lignée, même s’il ne dispose pas de privilèges sur les objets, la base de données ou le schéma. Il suffit d’accorder à ce rôle le privilège RESOLVE ALL sur le compte, par exemple : GRANT RESOLVE ALL ON ACCOUNT TO ROLE lineage_role;
. Le rôle doit toujours disposer du privilège VIEW LINEAGE.
Nœuds de table renommés et supprimés¶
Les tables renommées apparaissent dans le graphique, mais les tables supprimées n’y figurent pas.
Historique et conservation de la lignée¶
La lignée a été introduite dans Snowflake en novembre 2024. Les informations de lignée sont disponibles comme suit :
La lignée d’une dépendance d’objet (par exemple, une vue basée sur une table) définie avant cette date est disponible.
La lignée des mouvements de données (par exemple, l’utilisation d’une instruction CTAS pour créer une table à partir d’une autre table) qui ont eu lieu avant cette date n’est pas disponible.
Les informations historiques sont conservées comme suit :
La lignée des colonnes est conservée pendant un an.
La lignée d’objets est conservée pendant un an.
Limites et considérations¶
La lignée n’est pas disponible pour les types d’objets suivants :
Objets dans une base de données partagée.
Objets de la base de données partagée SNOWFLAKE.
Objets dans le INFORMATION_SCHEMA d’une base de données.
Les tables dynamiques apparaissent dans le graphique de lignée pour d’autres objets, mais l’onglet Lineage n’apparaît pas pour les tables dynamiques elles-mêmes.
La lignée n’inclut pas une table qui a été utilisée pour un filtrage ou une jointure lorsque les données n’ont pas été transférées de la table à l’objet en aval. Dans l’exemple suivant, la table
t2
n’est pas considérée comme faisant partie de la lignée de la tabletarget_table
:CREATE TABLE target_table AS SELECT t1.c1, t1.c2 FROM t1, t2 WHERE t1.c3 = t2.c3;
La lignée ne peut pas suivre le mouvement de données résultant de requêtes séparées et disjointes. Par exemple, le jeu de requêtes suivant n’engendre pas de lignée de la table
sourceTable1
vers la tabletarget_table
.SET read_output1 = (SELECT c1 FROM sourceTable1); INSERT INTO target_table(c1) VALUES ($read_output1);