{"id":6746,"date":"2026-07-12T02:05:28","date_gmt":"2026-07-12T10:05:28","guid":{"rendered":"https:\/\/www.gudusoft.com\/column-level-data-lineage\/"},"modified":"2026-07-13T19:02:19","modified_gmt":"2026-07-14T03:02:19","slug":"column-level-data-lineage","status":"publish","type":"page","link":"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-au-niveau-des-colonnes\/","title":{"rendered":"Tra\u00e7abilit\u00e9 des donn\u00e9es au niveau des colonnes\u00a0: d\u00e9finition et raisons pour lesquelles le niveau table est insuffisant."},"content":{"rendered":"<p><strong>Tra\u00e7abilit\u00e9 des donn\u00e9es au niveau des colonnes<\/strong> Associe chaque colonne de sortie d&#039;une requ\u00eate, d&#039;une vue ou d&#039;un rapport aux colonnes sources exactes qui la produisent, en tenant compte de chaque transformation appliqu\u00e9e\u00a0: fonctions, conversions, jointures, agr\u00e9gations et filtres. L\u00e0 o\u00f9 la tra\u00e7abilit\u00e9 au niveau de la table indique \u00ab\u00a0table\u00a0\u00bb <code>ordres<\/code> table d&#039;alimentation <code>rapport sur les revenus<\/code>\u00ab\u00a0, la lign\u00e9e au niveau de la colonne indique\u00a0\u00bb<code>rapport_revenus.total<\/code> est <code>SOMME(commandes.montant)<\/code>, filtr\u00e9 par <code>statut des commandes<\/code> et group\u00e9s par <code>clients.r\u00e9gion<\/code>\u00ab C\u2019est le niveau de granularit\u00e9 auquel les r\u00e9ponses \u00e0 l\u2019analyse d\u2019impact, au d\u00e9bogage et \u00e0 l\u2019audit deviennent pr\u00e9cises au lieu d\u2019approximatives. \u00bb<\/p>\n\n\n\n<div class=\"gd-stats\">\n<div class=\"gd-stat\"><b>Niveau de colonne<\/b><span>pas seulement au niveau de la table<\/span><\/div>\n<div class=\"gd-stat\"><b>Direct + indirect<\/b><span>lign\u00e9e fdd et fddi<\/span><\/div>\n<div class=\"gd-stat\"><b>39<\/b><span>dialectes SQL analys\u00e9s<\/span><\/div>\n<div class=\"gd-stat\"><b>Statique<\/b><span>lit les requ\u00eates SQL, jamais vos donn\u00e9es.<\/span><\/div>\n<\/div>\n\n\n\n<p>Cette page d\u00e9finit le terme, pr\u00e9sente une colonne de sortie \u00e0 travers une requ\u00eate r\u00e9elle avec une CTE, une jointure et une agr\u00e9gation, et explique pourquoi l&#039;extraction de ces informations n\u00e9cessite une analyse s\u00e9mantique SQL plut\u00f4t qu&#039;une correspondance de mod\u00e8les. Si le concept de lignage vous est nouveau, commencez par\u2026 <a href=\"https:\/\/www.gudusoft.com\/fr\/quest-ce-que-la-lignee-de-donnees\/\">Qu\u2019est-ce que la tra\u00e7abilit\u00e9 des donn\u00e9es et pourquoi est-elle importante\u00a0?<\/a>, revenez ensuite ici pour les d\u00e9tails au niveau de la colonne.<\/p>\n\n\n\n<div class=\"wp-block-group gd-callout is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n\n<p><strong>V\u00e9rifiez-le sur votre propre SQL\u00a0:<\/strong> collez votre requ\u00eate dans le <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=column-level-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Visualiseur de lignage SQLFlow gratuit<\/a> Cliquez sur une colonne de sortie pour afficher son chemin amont complet. L&#039;offre gratuite du Cloud suffit pour suivre ces instructions.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Quels enregistrements de lignage de donn\u00e9es au niveau des colonnes<\/h2>\n\n\n\n<p>Pour chaque colonne \u00e9crite ou renvoy\u00e9e par une instruction, un graphe de lignage au niveau de la colonne stocke trois \u00e9l\u00e9ments\u00a0:<\/p>\n\n\n\n<ul><li><strong>Colonnes sources\u00a0:<\/strong> les colonnes physiques dont les valeurs sont achemin\u00e9es vers la sortie, r\u00e9solues \u00e0 travers un nombre quelconque de couches interm\u00e9diaires telles que les CTE, les sous-requ\u00eates, les vues et les tables temporaires.<\/li>\n<li><strong>Transformations :<\/strong> les op\u00e9rations appliqu\u00e9es sur le chemin, par exemple <code>SOMME()<\/code>, <code>CASTING()<\/code>, <code>CAS<\/code> expressions, fonctions de cha\u00eenes de caract\u00e8res et op\u00e9rateurs ensemblistes comme <code>UNION<\/code>.<\/li>\n<li><strong>Type de relation :<\/strong> Il s&#039;agit de savoir si la valeur d&#039;une colonne source se retrouve effectivement dans le r\u00e9sultat (traduction directe) ou si elle influence simplement ce dernier par le biais d&#039;un filtre, d&#039;une jointure ou d&#039;un regroupement (traduction indirecte). Cette distinction sera approfondie plus loin, car la plupart des outils l&#039;ignorent.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi la lign\u00e9e au niveau de la table ne suffit pas<\/h2>\n\n\n\n<p>L&#039;analyse de la tra\u00e7abilit\u00e9 au niveau des tables est peu co\u00fbteuse \u00e0 produire et tr\u00e8s utile pour une premi\u00e8re prise en main\u00a0: elle permet de visualiser les relations entre les tables et les vues. Le probl\u00e8me est que les questions auxquelles les \u00e9quipes de donn\u00e9es doivent r\u00e9ellement r\u00e9pondre concernent les colonnes, et la granularit\u00e9 des tables oblige \u00e0 des approximations excessives.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Question<\/th><th>R\u00e9ponse au niveau du tableau<\/th><th>R\u00e9ponse au niveau de la colonne<\/th><\/tr><\/thead><tbody>\n<tr><td>Qu&#039;est-ce qui se casse si je renomme ? <code>clients.email<\/code>?<\/td><td>Chaque objet qui lit <code>clients<\/code> \u2014 souvent des dizaines de faux positifs<\/td><td>Seuls les avis, proc\u00e9dures et rapports qui font r\u00e9f\u00e9rence \u00e0 <code>e-mail<\/code> sp\u00e9cifiquement<\/td><\/tr>\n<tr><td>D&#039;o\u00f9 vient ce chiffre erron\u00e9 affich\u00e9 sur le tableau de bord\u00a0?<\/td><td>\u00ab Quelque part en amont de ces quatre tables \u00bb<\/td><td>La cha\u00eene d&#039;expression exacte, du champ du tableau de bord jusqu&#039;aux colonnes sources physiques.<\/td><\/tr>\n<tr><td>Quelles sorties contiennent des informations personnelles identifiables (PII) provenant de <code>num\u00e9ro de s\u00e9curit\u00e9 sociale<\/code>?<\/td><td>Chaque table en aval de la table source, qu&#039;elle soit ou non <code>num\u00e9ro de s\u00e9curit\u00e9 sociale<\/code> se propage<\/td><td>L&#039;ensemble pr\u00e9cis des colonnes <code>num\u00e9ro de s\u00e9curit\u00e9 sociale<\/code> la valeur atteint r\u00e9ellement<\/td><\/tr>\n<tr><td>Peut-on supprimer cette colonne de pr\u00e9paration\u00a0?<\/td><td>Inconnu \u2014 le tableau est r\u00e9f\u00e9renc\u00e9, donc supposer que non<\/td><td>Oui, si aucune colonne en aval ne le lit directement ou indirectement.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p><strong class=\"gd-lead-in\">Le co\u00fbt des faux positifs n&#039;est pas purement th\u00e9orique.<\/strong> Si une modification de sch\u00e9ma signale 40 tableaux de bord en aval au niveau des tables, mais que seulement 3 d&#039;entre eux utilisent r\u00e9ellement la colonne modifi\u00e9e, les 37 autres sont soit inutilement test\u00e9s \u00e0 nouveau, soit, pire encore, incitent l&#039;\u00e9quipe \u00e0 ignorer l&#039;outil de tra\u00e7abilit\u00e9. La fiabilit\u00e9 de la tra\u00e7abilit\u00e9 repose sur la pr\u00e9cision, et cette pr\u00e9cision s&#039;applique au niveau des colonnes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple concret\u00a0: une colonne trait\u00e9e par une CTE, une jointure et une agr\u00e9gation<\/h2>\n\n\n\n<p>Voici une requ\u00eate simple mais r\u00e9aliste. L&#039;objectif\u00a0: retracer pr\u00e9cis\u00e9ment o\u00f9 <code>revenu_total<\/code> vient de.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AVEC recent_orders AS ( SELECT o.order_id, o.customer_id, o.amount, o.status FROM orders o WHERE o.order_date &gt;= DATE &#039;2026-01-01&#039; ) SELECT c.region, SUM(r.amount) AS total_revenue FROM recent_orders r JOIN customers c ON c.customer_id = r.customer_id WHERE r.status = &#039;COMPLETED&#039; GROUP BY c.region;<\/code><\/pre>\n\n\n\n<p>R\u00e9solution <code>revenu_total<\/code> n\u00e9cessite trois sauts :<\/p>\n\n\n\n<ol><li><code>revenu_total<\/code> est d\u00e9fini comme <code>SOMME(r.montant)<\/code>, donc sa valeur provient de la colonne <code>montant<\/code> de la relation alias <code>r<\/code>, transmis par une fonction d&#039;agr\u00e9gation.<\/li>\n<li><code>r<\/code> Ce n&#039;est pas un tableau. C&#039;est le CTE. <code>commandes r\u00e9centes<\/code>, dont <code>montant<\/code> La colonne est un passage de <code>commandes.montant<\/code>L&#039;alias, l&#039;\u00e9l\u00e9ment de table commune (CTE) et la projection de colonne doivent tous \u00eatre r\u00e9solus avant que la source physique ne soit connue.<\/li>\n<li>La lign\u00e9e directe compl\u00e8te se pr\u00e9sente donc sous la forme d&#039;une seule colonne physique\u00a0: <code>commandes.montant<\/code> \u2192 <code>montant des commandes r\u00e9centes<\/code> \u2192 <code>SOMME()<\/code> \u2192 <code>revenu_total<\/code>.<\/li><\/ol>\n\n\n\n<p>Mais cinq autres colonnes fa\u00e7onnent le r\u00e9sultat sans jamais y appara\u00eetre\u00a0: <code>commandes.date_de_commande<\/code> filtre les lignes \u00e0 l&#039;int\u00e9rieur de la CTE, <code>statut des commandes<\/code> Les filtrent \u00e0 nouveau \u00e0 l&#039;ext\u00e9rieur <code>O\u00d9<\/code>, <code>commandes.identifiant_client<\/code> et <code>clients.identifiant_client<\/code> d\u00e9cider quelles lignes se rejoignent, et <code>clients.r\u00e9gion<\/code> d\u00e9termine comment les lignes sont regroup\u00e9es en compartiments agr\u00e9g\u00e9s. Modifiez la s\u00e9mantique de l&#039;un de ces \u00e9l\u00e9ments et <code>revenu_total<\/code> Des modifications sont apport\u00e9es, m\u00eame si aucune de leurs valeurs n&#039;appara\u00eet dans le r\u00e9sultat. Une recherche textuelle indiquerait que \u00ab cette requ\u00eate touche <code>ordres<\/code> et <code>clients<\/code>\u00ab\u00a0La tra\u00e7abilit\u00e9 au niveau des colonnes vous indique quelle colonne contient la valeur et quelles sont les cinq colonnes qui la r\u00e9gissent.\u00a0\u00bb<\/p>\n\n\n\n<div class=\"wp-block-group gd-panel-navy is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Lign\u00e9e directe vs indirecte : la distinction fdd\/fddi<\/h2>\n\n\n\n<p>Ces deux types de relations m\u00e9ritent des noms distincts. Dans le mod\u00e8le de lignage de Gudu SQLFlow, <strong>flux de donn\u00e9es direct<\/strong> (\u00e9tiquet\u00e9) <code>fdd<\/code>) signifie que la valeur d&#039;une colonne source est transf\u00e9r\u00e9e vers la colonne cible, \u00e9ventuellement transform\u00e9e par des fonctions, des conversions ou des agr\u00e9gats. <strong>Flux de donn\u00e9es indirect<\/strong> (\u00e9tiquet\u00e9) <code>fddi<\/code>) signifie qu&#039;une colonne source influence la cible sans y contribuer par sa valeur\u00a0: colonnes utilis\u00e9es dans <code>O\u00d9<\/code> pr\u00e9dicats, <code>REJOINDRE<\/code> conditions, <code>GROUPER PAR<\/code> cl\u00e9s et clauses similaires.<\/p>\n\n\n\n<p>SQLFlow mod\u00e9lise ces relations comme des types distincts, activables et d\u00e9sactivables s\u00e9par\u00e9ment, dans le diagramme. D\u00e9sactivez la tra\u00e7abilit\u00e9 indirecte pour visualiser la provenance des valeurs pures, la vue souhait\u00e9e par un auditeur pour prouver quels champs sources figurent dans un rapport r\u00e9glement\u00e9. Activez-la pour visualiser l&#039;ensemble de l&#039;impact, la vue souhait\u00e9e par un ing\u00e9nieur avant de modifier une colonne, car la suppression d&#039;une colonne de filtre modifie silencieusement tous les agr\u00e9gats en aval. La plupart des outils de tra\u00e7abilit\u00e9 concurrents ne font pas cette distinction\u00a0: soit ils ne rendent compte que du flux direct et passent \u00e0 c\u00f4t\u00e9 de l&#039;impact r\u00e9el, soit ils regroupent tout et r\u00e9introduisent les faux positifs que vous aviez d\u00e9plac\u00e9s au niveau de la colonne pour les \u00e9viter.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi cela n\u00e9cessite une analyse s\u00e9mantique et non des expressions r\u00e9guli\u00e8res<\/h2>\n\n\n\n<p>Il est tentant d&#039;extraire la lign\u00e9e en effectuant une correspondance de motifs dans le texte SQL pour les noms de tables et de colonnes. Cette approche \u00e9choue pr\u00e9cis\u00e9ment sur les constructions que l&#039;on retrouve en abondance dans le SQL de production\u00a0:<\/p>\n\n\n\n<ul><li><strong>Expansion stellaire.<\/strong> <code>S\u00c9LECTIONNER *<\/code> Les noms de colonnes ne sont pas sp\u00e9cifi\u00e9s. Les colonnes transmises d\u00e9pendent du sch\u00e9ma de la relation sous-jacente au moment de l&#039;analyse et, dans le cas d&#039;une jointure, des sch\u00e9mas combin\u00e9s de toutes les relations jointes. R\u00e9solution <code>*<\/code> N\u00e9cessite des m\u00e9tadonn\u00e9es et des r\u00e8gles de port\u00e9e\u00a0; aucun mod\u00e8le de texte ne peut produire la liste des colonnes.<\/li>\n<li><strong>Afficher la r\u00e9solution.<\/strong> Lorsqu&#039;une requ\u00eate lit <code>v_sales.net_montant<\/code>La v\u00e9ritable lign\u00e9e passe par la d\u00e9finition de la vue, et les vues s&#039;empilent r\u00e9guli\u00e8rement les unes sur les autres. L&#039;analyseur doit d\u00e9velopper chaque d\u00e9finition de mani\u00e8re r\u00e9cursive et fusionner les correspondances de colonnes, une op\u00e9ration effectu\u00e9e sur un mod\u00e8le s\u00e9mantique r\u00e9solu, et non sur des cha\u00eenes de caract\u00e8res.<\/li>\n<li><strong>Port\u00e9e et ambigu\u00eft\u00e9.<\/strong> Une chronique non qualifi\u00e9e comme <code>statut<\/code> Dans une jointure \u00e0 trois tables, une relation appartient \u00e0 une seule, d\u00e9termin\u00e9e par les r\u00e8gles de port\u00e9e SQL et les sch\u00e9mas des tables. Une erreur de conjecture corrompt silencieusement le graphe de lignage.<\/li>\n<li><strong>Expressions.<\/strong> <code>COALESCE(ax, par)<\/code>, <code>CAS<\/code> Les branches et les fonctions de fen\u00eatre d\u00e9finissent chacune un ensemble diff\u00e9rent de colonnes contributives. Seul un v\u00e9ritable arbre d&#039;expression les capture.<\/li>\n<li><strong>Dialectes.<\/strong> Oracle <code>CONNECTEZ-VOUS PAR<\/code>, T-SQL <code>SORTIR<\/code> clause, de BigQuery <code>SAUF<\/code> Dans une liste d&#039;\u00e9toiles\u00a0: chaque dialecte poss\u00e8de une syntaxe qu&#039;une grammaire ANSI g\u00e9n\u00e9rique interpr\u00e8te mal. SQLFlow propose 39 analyseurs syntaxiques sp\u00e9cifiques \u00e0 chaque dialecte plut\u00f4t qu&#039;une seule grammaire standard.<\/li><\/ul>\n\n\n\n<p>En r\u00e9sum\u00e9, la tra\u00e7abilit\u00e9 pr\u00e9cise au niveau des colonnes est un probl\u00e8me de compilation. SQLFlow repose sur le General SQL Parser, un compilateur SQL complet (analyseur lexical, analyseur syntaxique, r\u00e9solveur s\u00e9mantique, analyseur de flux de donn\u00e9es) d\u00e9velopp\u00e9 commercialement depuis le milieu des ann\u00e9es 2000 et valid\u00e9 sur environ 13\u00a0600 jeux de tests SQL par dialecte. Ce m\u00eame moteur r\u00e9sout les cas les plus complexes\u00a0: les corps des proc\u00e9dures stock\u00e9es en Oracle PL\/SQL et SQL Server T-SQL, la tra\u00e7abilit\u00e9 \u00e0 travers les param\u00e8tres de proc\u00e9dure et les tables temporaires, ainsi que le SQL dynamique int\u00e9gr\u00e9 aux proc\u00e9dures.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mise en pratique de la lign\u00e9e au niveau des colonnes<\/h2>\n\n\n\n<p>Gudu SQLFlow est un syst\u00e8me automatis\u00e9 <a href=\"https:\/\/www.gudusoft.com\/fr\/outil-de-lignee-de-donnees-sql\/\">Outil de tra\u00e7abilit\u00e9 des donn\u00e9es SQL<\/a> Ce g\u00e9n\u00e9rateur produit le graphique au niveau des colonnes d\u00e9crit sur cette page \u00e0 partir de n&#039;importe quelle requ\u00eate SQL\u00a0: requ\u00eates coll\u00e9es, fichiers import\u00e9s, m\u00e9tadonn\u00e9es de base de donn\u00e9es en direct via JDBC, fichiers manifestes dbt, ou encore l&#039;historique des requ\u00eates Snowflake et les journaux de requ\u00eates Redshift. Le r\u00e9sultat est un diagramme interactif que vous pouvez explorer colonne par colonne, ainsi que des donn\u00e9es de tra\u00e7abilit\u00e9 structur\u00e9es au format JSON ou CSV, une exportation PNG et une API REST.<\/p>\n\n\n\n<p>\u00c0 l&#039;\u00e9chelle de l&#039;entreprise, il analyse par lots des environnements de plus de 100 bases de donn\u00e9es et plus d&#039;un million de colonnes, effectue des analyses incr\u00e9mentales sur un r\u00e9f\u00e9rentiel de tra\u00e7abilit\u00e9 persistant et exporte les donn\u00e9es vers DataHub, Microsoft Purview et OpenMetadata. Ainsi, la tra\u00e7abilit\u00e9 au niveau des colonnes est int\u00e9gr\u00e9e au catalogue que vous utilisez d\u00e9j\u00e0. L&#039;analyse \u00e9tant statique, SQLFlow lit uniquement le code SQL et les m\u00e9tadonn\u00e9es de sch\u00e9ma, jamais les lignes de vos tables. De plus, l&#039;\u00e9dition sur site conserve l&#039;int\u00e9gralit\u00e9 du texte SQL au sein de votre r\u00e9seau.<\/p>\n\n\n\n<p>Pour plus de traces comme celle ci-dessus, \u00e0 travers les sous-requ\u00eates, les vues, les proc\u00e9dures stock\u00e9es et les mod\u00e8les dbt, consultez notre biblioth\u00e8que de <a href=\"https:\/\/www.gudusoft.com\/fr\/exemples-de-lignees-de-donnees\/\">exemples de lign\u00e9e de donn\u00e9es travaill\u00e9es<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group gd-panel-navy gd-cta is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Consultez la tra\u00e7abilit\u00e9 au niveau des colonnes de votre propre requ\u00eate SQL<\/h2>\n\n\n<p>Collez une requ\u00eate et cliquez sur n&#039;importe quelle colonne de sortie pour retracer son chemin complet, direct et indirect, jusqu&#039;\u00e0 la source.<\/p>\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-3\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=column-level-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Essayez SQLFlow gratuitement<\/a><\/div>\n\n\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/fr\/outil-de-lignee-de-donnees-sql\/\">Consultez l&#039;outil de lign\u00e9e<\/a><\/div>\n<\/div>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Foire aux questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Quelle est la diff\u00e9rence entre la tra\u00e7abilit\u00e9 des donn\u00e9es au niveau de la table et au niveau de la colonne\u00a0?<\/h3>\n\n\n<p>L&#039;historique au niveau des tables indique quelles tables et vues alimentent quelles autres, une ar\u00eate par paire d&#039;objets. L&#039;historique au niveau des colonnes indique, pour chaque colonne de sortie, les colonnes sources exactes qui l&#039;alimentent et les transformations appliqu\u00e9es. Cette granularit\u00e9 au niveau des colonnes permet d&#039;\u00e9liminer les faux positifs lors de l&#039;analyse d&#039;impact et de garantir la pr\u00e9cision des r\u00e9sultats d&#039;audit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Qu&#039;est-ce que la lign\u00e9e indirecte (d&#039;impact)\u00a0?<\/h3>\n\n\n<p>La filiation indirecte relie une colonne source \u00e0 une sortie qu&#039;elle influence sans y contribuer directement\u00a0: colonnes des clauses WHERE, conditions JOIN, cl\u00e9s GROUP BY et pr\u00e9dicats d&#039;agr\u00e9gation. SQLFlow la mod\u00e9lise comme un type de relation distinct (fddi) que vous pouvez activer ou d\u00e9sactiver ind\u00e9pendamment du flux de donn\u00e9es direct (fdd) dans le diagramme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Puis-je extraire la lign\u00e9e au niveau des colonnes avec regex ou grep\u00a0?<\/h3>\n\n\n<p>De mani\u00e8re non fiable. L&#039;expansion en \u00e9toile, la r\u00e9solution des vues, les noms de colonnes non qualifi\u00e9s et les expressions telles que CASE ou COALESCE n\u00e9cessitent toutes un mod\u00e8le s\u00e9mantique construit \u00e0 partir d&#039;une analyse syntaxique r\u00e9elle du SQL et des m\u00e9tadonn\u00e9es du sch\u00e9ma. La correspondance de mod\u00e8les peut trouver les noms de tables\u00a0; elle ne peut pas d\u00e9terminer le flux des colonnes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La tra\u00e7abilit\u00e9 au niveau des colonnes fonctionne-t-elle \u00e0 travers les vues et SELECT *\u00a0?<\/h3>\n\n\n<p>Oui, si l&#039;outil les r\u00e9sout. SQLFlow \u00e9tend SELECT * sur les m\u00e9tadonn\u00e9es du sch\u00e9ma et r\u00e9sout r\u00e9cursivement les r\u00e9f\u00e9rences de colonnes via les vues, les CTE et les sous-requ\u00eates, de sorte que la tra\u00e7abilit\u00e9 s&#039;\u00e9tend de la colonne de sortie finale jusqu&#039;aux colonnes sources physiques.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Est-ce que cela fonctionne avec les proc\u00e9dures stock\u00e9es et le SQL dynamique\u00a0?<\/h3>\n\n\n<p>Oui. SQLFlow dispose d&#039;analyseurs syntaxiques proc\u00e9duraux d\u00e9di\u00e9s pour Oracle PL\/SQL et SQL Server T-SQL, trace la lign\u00e9e \u00e0 travers les param\u00e8tres de proc\u00e9dure et les tables temporaires, r\u00e9sout le SQL dynamique assembl\u00e9 \u00e0 l&#039;int\u00e9rieur des proc\u00e9dures et g\u00e9n\u00e8re un graphe d&#039;appels des invocations de proc\u00e9dure \u00e0 proc\u00e9dure.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comment obtenir la tra\u00e7abilit\u00e9 au niveau des colonnes pour ma propre requ\u00eate SQL\u00a0?<\/h3>\n\n\n<p>Collez une requ\u00eate dans l&#039;offre gratuite de SQLFlow Cloud et le diagramme au niveau des colonnes s&#039;affiche dans votre navigateur. Pour les bases de donn\u00e9es compl\u00e8tes, connectez-vous via JDBC ou importez un manifeste dbt\u00a0; pour les environnements contr\u00f4l\u00e9s, SQLFlow On-Premise s&#039;ex\u00e9cute dans Docker ou Kubernetes au sein de votre r\u00e9seau.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull gd-band gd-band-navy gd-cta is-layout-constrained\" style=\"padding-top:56px;padding-bottom:56px\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Remontez \u00e0 la source de votre premi\u00e8re colonne<\/h2>\n\n\n<p>Collez la requ\u00eate d&#039;exemple de cette page, ou votre requ\u00eate SQL de production la plus complexe, et cliquez sur n&#039;importe quelle colonne de sortie pour voir sa lign\u00e9e directe et indirecte compl\u00e8te.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=column-level-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Essayez SQLFlow gratuitement<\/a><\/div>\n\n\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/fr\/contact\/\">Demander une d\u00e9monstration pour entreprises<\/a><\/div>\n<\/div>\n\n<\/div><\/div>\n\n\n\n<script type=\"application\/ld+json\">{\n    \"@context\": \"https:\\\/\\\/schema.org\",\n    \"@graph\": [\n        {\n            \"@type\": \"TechArticle\",\n            \"headline\": \"Column-Level Data Lineage: What It Is and Why Table-Level Isn't Enough\",\n            \"description\": \"Column-level data lineage maps every output column back to its exact source columns and transformations. A worked SQL example through a CTE, join, and aggregate, the direct vs indirect (fdd\\\/fddi) distinction, and why star expansion and view resolution require semantic parsing.\",\n            \"author\": {\n                \"@type\": \"Organization\",\n                \"name\": \"Gudu Software\",\n                \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/\"\n            },\n            \"publisher\": {\n                \"@type\": \"Organization\",\n                \"name\": \"Gudu Software\",\n                \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/\"\n            }\n        },\n        {\n            \"@type\": \"FAQPage\",\n            \"mainEntity\": [\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is the difference between table-level and column-level data lineage?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Table-level lineage records which tables and views feed which, one edge per object pair. Column-level lineage records, for every output column, the exact source columns that feed it and the transformations applied. Column granularity is what removes false positives from impact analysis and makes audit answers exact.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is indirect (impact) lineage?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Indirect lineage links a source column to an output it influences without contributing its value: columns in WHERE clauses, JOIN conditions, GROUP BY keys, and aggregate predicates. SQLFlow models it as a separate relationship type (fddi) that you can toggle independently of direct dataflow (fdd) in the diagram.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Can I extract column-level lineage with regex or grep?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Not reliably. Star expansion, view resolution, unqualified column names, and expressions like CASE or COALESCE all require a semantic model built from a real parse of the SQL plus schema metadata. Pattern matching can find table names; it cannot resolve which columns flow where.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does column-level lineage work through views and SELECT *?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes, if the tool resolves them. SQLFlow expands SELECT * against schema metadata and recursively resolves column references through views, CTEs, and subqueries, so lineage runs from the final output column all the way to physical source columns.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does it work on stored procedures and dynamic SQL?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. SQLFlow has dedicated procedural parsers for Oracle PL\\\/SQL and SQL Server T-SQL, traces lineage through procedure parameters and temp tables, resolves dynamic SQL assembled inside procedures, and renders a call graph of procedure-to-procedure invocations.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How do I get column-level lineage for my own SQL?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Paste a query into SQLFlow Cloud's free tier and the column-level diagram renders in the browser. For whole databases, connect over JDBC or import a dbt manifest; for regulated environments, SQLFlow On-Premise runs in Docker or Kubernetes inside your own network.\"\n                    }\n                }\n            ]\n        }\n    ]\n}<\/script>","protected":false},"excerpt":{"rendered":"<p>La tra\u00e7abilit\u00e9 des donn\u00e9es au niveau des colonnes associe chaque colonne de sortie d&#039;une requ\u00eate, d&#039;une vue ou d&#039;un rapport aux colonnes sources exactes qui la produisent, ainsi qu&#039;\u00e0 chaque transformation appliqu\u00e9e\u00a0: fonctions, conversions, jointures, agr\u00e9gations et filtres. Alors que la tra\u00e7abilit\u00e9 au niveau des tables indique \u00ab\u00a0la table orders alimente la table revenue_report\u00a0\u00bb, la tra\u00e7abilit\u00e9 au niveau des colonnes indique \u00ab\u00a0revenue_report.total est \u00e9gal \u00e0 la somme de orders.amount, filtr\u00e9e par orders.status et group\u00e9e par customers.region\u00a0\u00bb. C&#039;est \u00e0 ce niveau de granularit\u00e9 que l&#039;analyse d&#039;impact, le d\u00e9bogage et les audits deviennent pr\u00e9cis et non plus approximatifs. Tra\u00e7abilit\u00e9 au niveau des colonnes (et non seulement au niveau des tables). Tra\u00e7abilit\u00e9 directe et indirecte (fdd et fddi). 39 dialectes SQL analys\u00e9s. Lecture statique du SQL, jamais de vos donn\u00e9es. Cette page d\u00e9finit le terme et d\u00e9crit une sortie\u2026<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"_links":{"self":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/6746"}],"collection":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/comments?post=6746"}],"version-history":[{"count":1,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/6746\/revisions"}],"predecessor-version":[{"id":6822,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/6746\/revisions\/6822"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/media?parent=6746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}