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;
Copy

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 :

  1. Connectez-vous à Snowsight avec les privilèges requis.

  2. Utilisez le menu Data » Databases pour sélectionner un objet pris en charge, tel qu’une table ou une vue.

  3. Sélectionnez l’onglet Lineage.

Les actions de base de l’onglet Lineage sont les suivantes :

Capture d'écran présentant un exemple de lignée des données dans Snowsight
  • 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 :

  1. Ouvrez l’onglet Lineage et sélectionnez l’objet qui contient la colonne que vous souhaitez tracer. Un panneau latéral s’ouvre.

  2. Survolez le nom de la colonne dans le panneau latéral et sélectionnez View Lineage.

  3. 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.

Travailler avec des balises

L’onglet Lineage offre une expérience de gouvernance intégrée qui vous permet de voir la lignée des colonnes, d’identifier les colonnes qui requièrent des balises et d’appliquer de nouvelles balises, le tout dans le même workflow.

La possibilité de voir et d’appliquer des balises dépend des privilèges de contrôle d’accès du rôle que vous utilisez pour voir l’onglet Lineage. Pour plus d’informations sur les privilèges requis pour travailler avec les balises, voir Résumé des commandes, des opérations et des privilèges DDL.

Rechercher les balises définies sur un objet et sur ses colonnes

  1. Ouvrez l’onglet Lineage et sélectionnez l’objet qui vous intéresse. Un panneau latéral s’ouvre.

  2. Pour voir les balises définies sur l’objet lui-même, consultez la section Details du panneau latéral.

  3. Pour voir les balises définies sur une colonne de cet objet, recherchez cette colonne dans la section Columns. Si une balise a été définie, un symbole de balise apparaît à côté du nom de la colonne. Survolez ce symbole pour voir le nom et la valeur de la balise.

Identifier les balises manquantes ou les valeurs de balises incorrectes et y remédier

Si une balise est apposée sur une colonne, il y a de fortes chances que la même balise soit appliquée aux colonnes en amont et en aval qui partagent la lignée de cette colonne. De même, la valeur d’une balise apposée sur les colonnes en amont et en aval doit souvent être la même.

Le workflow de lignée des données identifie les balises manquantes dans les colonnes en amont et en aval, ainsi que les balises dont la valeur est différente. Il vous aide ensuite à appliquer les balises manquantes ou à modifier la valeur de la balise apposée sur les colonnes concernées.

  1. Ouvrez l’onglet Lineage et sélectionnez l’objet qui contient la colonne que vous souhaitez tracer. Un panneau latéral s’ouvre.

  2. Survolez le nom de la colonne dans le panneau latéral et sélectionnez View Lineage.

  3. Dans la boîte de dialogue View Column Lineage, sélectionnez Downstream Lineage ou Upstream Lineage.

    S’il y a des balises manquantes ou des valeurs de balise non concordantes sur la colonne en aval ou en amont, une bannière s’affiche. Le code couleur présent dans la colonne Tags vous permet d’identifier le problème de balise détecté :

    • Si une balise a une bordure en pointillés, cette balise n’a pas été appliquée à la colonne.

    • Si une balise a une bordure jaune, la valeur de cette balise ne correspond pas.

  4. Pour corriger ces problèmes de balises manquantes ou mal assorties, procédez comme suit :

    1. Sélectionnez Review and Apply.

    2. Après avoir confirmé que vous acceptez les modifications proposées, sélectionnez Apply.

Identifier les politiques de masquage

  1. Ouvrez l’onglet Lineage, et sélectionnez l’objet qui vous intéresse. Un panneau latéral s’ouvre.

  2. 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 :

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.

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 :

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 table target_table :

    CREATE TABLE target_table AS
      SELECT t1.c1, t1.c2
        FROM t1, t2
        WHERE t1.c3 = t2.c3;
    
    Copy
  • 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 table target_table.

    SET read_output1 = (SELECT c1 FROM sourceTable1);
    
    INSERT INTO target_table(c1) VALUES ($read_output1);
    
    Copy