{"id":6756,"date":"2026-07-12T02:06:52","date_gmt":"2026-07-12T10:06:52","guid":{"rendered":"https:\/\/www.gudusoft.com\/postgresql-data-lineage\/"},"modified":"2026-07-12T02:06:52","modified_gmt":"2026-07-12T10:06:52","slug":"postgresql-data-lineage","status":"publish","type":"page","link":"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-postgresql\/","title":{"rendered":"Tra\u00e7abilit\u00e9 des donn\u00e9es PostgreSQL\u00a0: Tra\u00e7abilit\u00e9 au niveau des colonnes \u00e0 partir des vues et du SQL"},"content":{"rendered":"<p><strong>Tra\u00e7abilit\u00e9 des donn\u00e9es PostgreSQL<\/strong> Il s&#039;agit de la cartographie au niveau des colonnes de la fa\u00e7on dont les donn\u00e9es circulent dans vos vues, CTE et DML PostgreSQL\u00a0: quelles colonnes de la table de base alimentent chaque colonne de vue ou de rapport, et quelles jointures, filtres, conversions et agr\u00e9gations transforment les donn\u00e9es en cours de route. Le catalogue de PostgreSQL indique que les objets sont interd\u00e9pendants. <code>pg_depend<\/code> Les enregistrements indiquent qu&#039;une vue r\u00e9f\u00e9rence une table, mais ils ne disent rien sur la transformation des colonnes. Pour \u00e9tablir une v\u00e9ritable tra\u00e7abilit\u00e9, il faut analyser le code SQL lui-m\u00eame, et c&#039;est pr\u00e9cis\u00e9ment ce que fait cette analyse. <strong>Gudu SQLFlow<\/strong> il utilise un analyseur syntaxique d\u00e9di\u00e9 au dialecte PostgreSQL plut\u00f4t qu&#039;une grammaire ANSI g\u00e9n\u00e9rique.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained\" style=\"background-color:#eef7fb;padding-top:24px;padding-bottom:24px\"><div class=\"wp-block-group__inner-container\">\n\n<p><strong>Essayez en 30 secondes\u00a0:<\/strong> collez n&#039;importe quelle requ\u00eate PostgreSQL ou d\u00e9finition de vue dans le <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=postgresql-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Visualiseur de lignage SQLFlow gratuit<\/a> et obtenez un diagramme de lignage interactif au niveau des colonnes. L&#039;\u00e9dition cloud propose une version gratuite.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi pg_depend ne peut pas r\u00e9pondre aux questions de lign\u00e9e<\/h2>\n\n\n\n<p>PostgreSQL conserve des enregistrements de d\u00e9pendances m\u00e9ticuleux. <code>pg_depend<\/code> et <code>pg_rewrite<\/code> sachez que <code>v_region_revenu<\/code> ne peut pas \u00eatre supprim\u00e9 tant qu&#039;il fait r\u00e9f\u00e9rence \u00e0 <code>v_orders_enrichi<\/code>, et <code>sch\u00e9ma_information<\/code> Les vues indiquent les tables auxquelles une vue fait r\u00e9f\u00e9rence. Il s&#039;agit d&#039;un suivi des d\u00e9pendances au niveau objet, con\u00e7u pour <code>CHUTE ... CASCADE<\/code> La s\u00e9curit\u00e9, pas la lign\u00e9e.<\/p>\n\n\n\n<p>Ce que le catalogue ne peut pas vous dire\u00a0: quelles colonnes sp\u00e9cifiques alimentent <code>revenu<\/code>, si <code>montant<\/code> a \u00e9t\u00e9 jet\u00e9 ou agr\u00e9g\u00e9 en cours de route, que <code>statut<\/code> Le filtre appliqu\u00e9 au r\u00e9sultat ne l&#039;indique jamais, et le chemin complet appara\u00eet lorsque les vues sont imbriqu\u00e9es sur trois ou quatre niveaux. R\u00e9pondre \u00e0 la question \u00ab\u00a0D&#039;o\u00f9 vient ce nombre\u00a0?\u00a0\u00bb ou \u00ab\u00a0Que se passe-t-il si je supprime cette colonne\u00a0?\u00a0\u00bb n\u00e9cessite de reconstruire la logique de transformation \u00e0 partir du texte SQL stock\u00e9 dans les d\u00e9finitions de vue\u00a0\u2014 un probl\u00e8me d&#039;analyse syntaxique, et non une requ\u00eate de catalogue.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment SQLFlow construit la tra\u00e7abilit\u00e9 des donn\u00e9es PostgreSQL<\/h2>\n\n\n\n<ol><li><strong>Ingestion SQL.<\/strong> Collez des requ\u00eates, t\u00e9l\u00e9chargez des fichiers de script, connectez-vous \u00e0 PostgreSQL via JDBC pour extraire directement les d\u00e9finitions DDL et les visualiser, ou importez un manifeste dbt pour les projets dbt-on-Postgres.<\/li>\n<li><strong>Analyser avec une grammaire sp\u00e9cifique \u00e0 PostgreSQL.<\/strong> SQLFlow est construit sur le <a href=\"https:\/\/www.sqlparser.com\/\">Analyseur SQL g\u00e9n\u00e9ral (GSP)<\/a>, a commercial SQL compiler front-end developed since the mid-2000s and validated against roughly 13,600 per-dialect test fixtures. Its PostgreSQL parser handles the dialect&#8217;s own constructs \u2014 writable CTEs, <code>INSERER ... EN CAS DE CONFLIT<\/code>, le <code>::<\/code> Op\u00e9rateur de conversion, h\u00e9ritage et partitionnement DDL \u2014 et son r\u00e9solveur s\u00e9mantique s&#039;\u00e9tend <code>S\u00c9LECTIONNER *<\/code>, r\u00e9sout les r\u00e9f\u00e9rences de colonnes via des CTE, des sous-requ\u00eates et des d\u00e9finitions de vues, puis extrait les relations source-cible \u00e0 la granularit\u00e9 de la colonne.<\/li>\n<li><strong>Visualisez et exportez.<\/strong> Le r\u00e9sultat est un diagramme interactif que vous pouvez suivre en amont et en aval de n&#039;importe quelle colonne, exportable au format JSON, CSV ou PNG, ou interrogeable via une API REST.<\/li><\/ol>\n\n\n\n<p>PostgreSQL est l&#039;un des 39 dialectes pour lesquels SQLFlow fournit des analyseurs syntaxiques, notamment les moteurs de la famille Postgres\u00a0: Greenplum, Amazon Redshift et EDB Postgres. Chacun poss\u00e8de son propre analyseur syntaxique, car il pr\u00e9sente des divergences par rapport au noyau PostgreSQL qui ont une incidence sur le fonctionnement d&#039;un moteur de tra\u00e7abilit\u00e9. La m\u00e9thodologie compl\u00e8te est d\u00e9crite dans le document suivant\u00a0: <a href=\"https:\/\/www.gudusoft.com\/fr\/outil-de-lignee-de-donnees-sql\/\">Pr\u00e9sentation de l&#039;outil de tra\u00e7abilit\u00e9 des donn\u00e9es SQL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Remonter une cha\u00eene de vues imbriqu\u00e9es jusqu&#039;aux tables de base<\/h2>\n\n\n\n<p>Les piles de vues imbriqu\u00e9es constituent le mode d&#039;accumulation logique par d\u00e9faut dans PostgreSQL, et c&#039;est l\u00e0 que le tra\u00e7age manuel de la lign\u00e9e atteint ses limites. Prenons l&#039;exemple d&#039;une cha\u00eene \u00e0 deux niveaux\u00a0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CR\u00c9ER UNE VUE v_orders_enriched COMME S\u00c9LECTIONNER o.order_id, o.customer_id, o.amount::numeric(12,2) AS amount, c.region DE orders o JOIN customers c SUR c.customer_id = o.customer_id O\u00d9 o.status = &#039;shipped&#039;; CR\u00c9ER UNE VUE v_region_revenue COMME S\u00c9LECTIONNER region, SUM(amount) AS revenue DE v_orders_enriched GROUP BY region;<\/code><\/pre>\n\n\n\n<p>Demandez \u00e0 SQLFlow o\u00f9 <code>v_region_revenue.revenu<\/code> provient de et r\u00e9sout la cha\u00eene compl\u00e8te\u00a0: <code>revenu<\/code> est <code>SOMME()<\/code> sur <code>v_orders_enriched.montant<\/code>, qui est un <code>num\u00e9rique(12,2)<\/code> distribution de <code>commandes.montant<\/code>Le diagramme repr\u00e9sente chaque \u00e9tape (tableau de base, vue interm\u00e9diaire, agr\u00e9gat) comme un chemin d\u00e9taill\u00e9, et non comme une simple approximation. Il met \u00e9galement en lumi\u00e8re ce qu&#039;une lecture superficielle ne permet pas d&#039;identifier\u00a0: <code>statut des commandes<\/code> n&#039;appara\u00eet jamais dans les r\u00e9sultats, pourtant chaque chiffre d&#039;affaires en d\u00e9pend <code>O\u00d9 o.status = &#039;exp\u00e9di\u00e9&#039;<\/code> Filtre. SQLFlow enregistre cela comme lign\u00e9e indirecte (plus de d\u00e9tails ci-dessous).<\/p>\n\n\n\n<p>La m\u00eame r\u00e9solution fonctionne quelle que soit la profondeur. Dans un sch\u00e9ma r\u00e9el o\u00f9 les vues s&#039;empilent sur cinq niveaux et o\u00f9 la moiti\u00e9 d&#039;entre elles utilisent <code>S\u00c9LECTIONNER *<\/code>SQLFlow \u00e9tend les \u00e9toiles par rapport aux d\u00e9finitions de table r\u00e9elles extraites via JDBC, de sorte que la tra\u00e7abilit\u00e9 reste pr\u00e9cise au niveau des colonnes m\u00eame lorsque le texte SQL ne nomme jamais les colonnes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Constructions PostgreSQL qui perturbent les analyseurs g\u00e9n\u00e9riques<\/h2>\n\n\n\n<p>Les outils qui traitent PostgreSQL comme un \u00ab SQL ANSI approximatif \u00bb \u00e9chouent pr\u00e9cis\u00e9ment sur les requ\u00eates qui g\u00e9n\u00e8rent le plus de flux de donn\u00e9es. Celles-ci sont toutes g\u00e9r\u00e9es par l&#039;analyseur syntaxique du dialecte PostgreSQL de SQLFlow\u00a0:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Construction<\/th><th>Pourquoi c&#039;est important pour la lign\u00e9e<\/th><\/tr><\/thead><tbody>\n<tr><td>CTE inscriptibles (<code>AVEC ... INSERTION\/MISE \u00c0 JOUR\/SUPPRESSION ... RETOUR<\/code>)<\/td><td>Une seule instruction permet \u00e0 la fois la lecture et l&#039;\u00e9criture\u00a0: la sortie DML de la CTE alimente la requ\u00eate externe. La tra\u00e7abilit\u00e9 doit relier la table modifi\u00e9e, la <code>RETOUR<\/code> colonnes et l&#039;objectif final sur un seul graphique.<\/td><\/tr>\n<tr><td><code>INSERER ... EN CAS DE CONFLIT, METTRE \u00c0 JOUR<\/code><\/td><td>Les op\u00e9rations d&#039;insertion et de mise \u00e0 jour acheminent les donn\u00e9es par deux chemins\u00a0: le chemin d&#039;insertion et le chemin de mise \u00e0 jour. <code>EXCLU<\/code> pseudo-table. Les deux correspondent \u00e0 des flux de colonnes r\u00e9els vers la table cible.<\/td><\/tr>\n<tr><td>h\u00e9ritage de tables et partitionnement d\u00e9claratif<\/td><td>Les requ\u00eates sur une table parente lisent implicitement ses tables enfants. SQLFlow analyse le DDL d&#039;h\u00e9ritage et de partitionnement afin que la tra\u00e7abilit\u00e9 soit correctement \u00e9tablie au niveau parent au lieu d&#039;\u00eatre fragment\u00e9e par partition.<\/td><\/tr>\n<tr><td>CTE cha\u00een\u00e9es et vues imbriqu\u00e9es<\/td><td>Les r\u00e9f\u00e9rences de colonnes doivent \u00eatre r\u00e9solues \u00e0 travers chaque couche interm\u00e9diaire, y compris les CTE qui font r\u00e9f\u00e9rence \u00e0 des CTE ant\u00e9rieures, jusqu&#039;aux tables de base physiques.<\/td><\/tr>\n<tr><td><code>::<\/code> colonnes de casting et d&#039;expression<\/td><td>Chaque colonne de sortie est associ\u00e9e \u00e0 ses sources gr\u00e2ce aux fonctions et conversions appliqu\u00e9es, vous pouvez donc voir non seulement <em>o\u00f9<\/em> une valeur provenait de mais <em>qu&#039;est-il arriv\u00e9 \u00e0<\/em>.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Lign\u00e9e directe ou indirecte\u00a0: les colonnes de filtre que vous manqueriez autrement<\/h2>\n\n\n\n<p>SQLFlow fait la distinction <strong>lign\u00e9e directe<\/strong> \u2014 valeurs de colonne qui sont physiquement int\u00e9gr\u00e9es \u00e0 une sortie \u2014 de <strong>lign\u00e9e indirecte (d&#039;impact)<\/strong> \u2014 colonnes utilis\u00e9es dans <code>O\u00d9<\/code> clauses, <code>REJOINDRE<\/code> conditions, et <code>GROUPER PAR<\/code> Des cl\u00e9s qui influencent le r\u00e9sultat sans y aboutir. Dans l&#039;exemple ci-dessus, <code>commandes.montant<\/code> est une lign\u00e9e directe pour <code>revenu<\/code>; <code>statut des commandes<\/code> et les deux <code>identifiant_client<\/code> Les cl\u00e9s de jointure sont indirectes.<\/p>\n\n\n\n<p>Cette distinction est activable\/d\u00e9sactivable dans le diagramme, et elle influe sur les d\u00e9cisions concr\u00e8tes. Si vous pr\u00e9voyez de modifier le domaine de <code>statut des commandes<\/code>La filiation directe indique qu&#039;aucune relation n&#039;en d\u00e9pend\u00a0; la filiation indirecte affiche tous les rapports de revenus qu&#039;elle filtre silencieusement. La plupart des outils de filiation ne mod\u00e9lisent pas du tout ce type de relation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D&#039;une simple requ\u00eate \u00e0 un ensemble de donn\u00e9es PostgreSQL<\/h2>\n\n\n\n<p>Pour une seule cha\u00eene de vues complexe, le niveau gratuit de SQLFlow Cloud suffit\u00a0: copier, analyser, explorer. Au-del\u00e0\u00a0:<\/p>\n\n\n\n<ul><li><strong>Analyses compl\u00e8tes de bases de donn\u00e9es\u00a0:<\/strong> Connectez-vous via JDBC (ou utilisez l&#039;extracteur de m\u00e9tadonn\u00e9es Grabit) pour r\u00e9cup\u00e9rer toutes les d\u00e9finitions de vues et d&#039;objets et cr\u00e9er un r\u00e9f\u00e9rentiel de tra\u00e7abilit\u00e9 persistant. Les d\u00e9ploiements en entreprise effectuent des analyses par lots sur des environnements de plus de 100 bases de donn\u00e9es et plus d&#039;un million de colonnes, avec des analyses incr\u00e9mentales ult\u00e9rieures.<\/li>\n<li><strong>Int\u00e9gration du catalogue\u00a0:<\/strong> Les adaptateurs d&#039;exportation envoient la tra\u00e7abilit\u00e9 au niveau des colonnes vers DataHub, Microsoft Purview et OpenMetadata, afin que SQLFlow puisse servir de moteur de tra\u00e7abilit\u00e9 derri\u00e8re le catalogue que vous utilisez d\u00e9j\u00e0.<\/li>\n<li><strong>Environnements isol\u00e9s :<\/strong> <a href=\"https:\/\/www.gudusoft.com\/fr\/sqlflow-on-premise-version\/\">SQLFlow sur site<\/a> Ex\u00e9cut\u00e9 sur Docker ou Kubernetes au sein de votre r\u00e9seau au tarif de $500\/mois ou $4\u00a0800 en une seule fois par type de base de donn\u00e9es, installable sur deux serveurs. Les donn\u00e9es SQL restent toujours stock\u00e9es dans votre infrastructure.<\/li>\n<li><strong>Protection de la vie priv\u00e9e d\u00e8s la conception\u00a0:<\/strong> SQLFlow effectue uniquement une analyse statique du code SQL et des m\u00e9tadonn\u00e9es du sch\u00e9ma. Il ne lit jamais les lignes de vos tables.<\/li><\/ul>\n\n\n\n<p>Depuis la version 8.2.3, vous pouvez \u00e9galement interroger le graphique r\u00e9sultant en langage naturel\u00a0: \u00ab\u00a0quelles vues d\u00e9pendent de <code>commandes.montant<\/code>? \u2014 chaque tableau et chaque colonne de la r\u00e9ponse \u00e9tant valid\u00e9s par rapport \u00e0 la lign\u00e9e analys\u00e9e avant d&#039;\u00eatre affich\u00e9s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u2019en est-il des outils de tra\u00e7abilit\u00e9 PostgreSQL open source\u00a0?<\/h2>\n\n\n\n<p>Les analyseurs syntaxiques open source comme <code>SQL Lineage<\/code> et <code>sqlglot<\/code> Ils sont vraiment performants pour extraire la lign\u00e9e au niveau des tables et des colonnes de base \u00e0 partir de requ\u00eates individuelles, et pour quelques instructions SELECT simples, ils peuvent suffire. Les lacunes apparaissent sur PostgreSQL en production\u00a0: r\u00e9solution <code>S\u00c9LECTIONNER *<\/code> L&#039;utilisation des cha\u00eenes de vues n\u00e9cessite des m\u00e9tadonn\u00e9es de sch\u00e9ma dynamiques\u00a0; des CTE modifiables et <code>SUR LE CONFLIT<\/code> Les mises \u00e0 jour n\u00e9cessitent des grammaires pr\u00e9cises pour chaque dialecte\u00a0; la tra\u00e7abilit\u00e9 indirecte via les filtres et les cl\u00e9s de jointure n&#039;est g\u00e9n\u00e9ralement pas mod\u00e9lis\u00e9e\u00a0; et extraire la tra\u00e7abilit\u00e9 ne revient pas \u00e0 la visualiser, la stocker et la comparer sur des milliers d&#039;objets. Si vous effectuez une \u00e9valuation, ex\u00e9cutez votre pile de vues la plus profonde et votre mise \u00e0 jour la plus complexe sur les deux m\u00e9thodes et comparez les graphiques.<\/p>\n\n\n\n<p>Si votre environnement utilise diff\u00e9rents moteurs, la m\u00eame famille d&#039;analyseurs syntaxiques les prend en charge avec le m\u00eame format de sortie\u00a0; consultez les pages associ\u00e9es pour plus d&#039;informations. <a href=\"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-mysql\/\">Tra\u00e7abilit\u00e9 des donn\u00e9es MySQL<\/a>, <a href=\"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-redshift\/\">Tra\u00e7abilit\u00e9 des donn\u00e9es Redshift<\/a>, et <a href=\"https:\/\/www.gudusoft.com\/fr\/greenplum-data-lineage\/\">Tra\u00e7abilit\u00e9 des donn\u00e9es Greenplum<\/a>, ou le <a href=\"https:\/\/www.gudusoft.com\/fr\/base-de-connaissances-sur-la-lignee-des-donnees\/\">base de connaissances sur la tra\u00e7abilit\u00e9 des donn\u00e9es<\/a> pour les concepts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Foire aux questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">PostgreSQL poss\u00e8de-t-il une fonction int\u00e9gr\u00e9e de tra\u00e7abilit\u00e9 des donn\u00e9es\u00a0?<\/h3>\n\n\n<p>Non. PostgreSQL suit les d\u00e9pendances au niveau des objets dans <code>pg_depend<\/code> \u2014 quelles vues r\u00e9f\u00e9rencent quelles tables \u2014 \u00e0 des fins d&#039;int\u00e9grit\u00e9 comme <code>CHUTE ... CASCADE<\/code>Il n&#039;enregistre pas la transformation des colonnes. La tra\u00e7abilit\u00e9 au niveau des colonnes doit \u00eatre d\u00e9duite en analysant le code SQL des d\u00e9finitions de vues et des scripts, ce que fait SQLFlow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow a-t-il besoin d&#039;acc\u00e9der aux donn\u00e9es de ma table\u00a0?<\/h3>\n\n\n<p>Non. SQLFlow effectue une analyse statique du code SQL et peut lire les m\u00e9tadonn\u00e9es du sch\u00e9ma (d\u00e9finitions des tables et des colonnes) pour r\u00e9soudre les r\u00e9f\u00e9rences. Il ne lit jamais les lignes. Avec l&#039;\u00e9dition sur site, m\u00eame le texte SQL reste au sein de votre r\u00e9seau.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow peut-il tracer la lign\u00e9e \u00e0 travers les CTE modifiables et les mises \u00e0 jour ON CONFLICT\u00a0?<\/h3>\n\n\n<p>Oui. L&#039;analyseur syntaxique du dialecte PostgreSQL g\u00e8re <code>AVEC ... INSERTION\/MISE \u00c0 JOUR\/SUPPRESSION ... RETOUR<\/code> d\u00e9clarations et <code>INSERER ... EN CAS DE CONFLIT, METTRE \u00c0 JOUR<\/code>, en mappant les flux de colonnes d&#039;insertion et de mise \u00e0 jour dans la table cible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comment sont g\u00e9r\u00e9es les tables partitionn\u00e9es et h\u00e9rit\u00e9es\u00a0?<\/h3>\n\n\n<p>SQLFlow analyse l&#039;h\u00e9ritage PostgreSQL et le DDL de partitionnement d\u00e9claratif, de sorte que la lign\u00e9e des requ\u00eates sur une table parente est rattach\u00e9e au niveau parent plut\u00f4t que d&#039;\u00eatre fragment\u00e9e en ar\u00eates par partition.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comment obtenir la tra\u00e7abilit\u00e9 de l&#039;ensemble d&#039;une base de donn\u00e9es PostgreSQL, et non d&#039;une seule requ\u00eate\u00a0?<\/h3>\n\n\n<p>Connectez SQLFlow \u00e0 la base de donn\u00e9es via JDBC ou extrayez les m\u00e9tadonn\u00e9es avec l&#039;ingesteur Grabit. SQLFlow r\u00e9cup\u00e8re toutes les d\u00e9finitions DDL et de vues, les analyse conjointement et maintient un r\u00e9f\u00e9rentiel de lignage persistant et mis \u00e0 jour de mani\u00e8re incr\u00e9mentale, capable de g\u00e9rer des environnements de plus de 100 bases de donn\u00e9es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Combien co\u00fbte SQLFlow ?<\/h3>\n\n\n<p>SQLFlow Cloud est gratuit au d\u00e9part\u00a0; les comptes premium co\u00fbtent 49,99\u00a0\u00a3\/mois. SQLFlow On-Premise co\u00fbte 500\u00a0\u00a3\/mois ou 4\u00a0800\u00a0\u00a3 en une seule fois par type de base de donn\u00e9es s\u00e9lectionn\u00e9, plus 100\u00a0\u00a3\/mois ou 1\u00a0000\u00a0\u00a3 en une seule fois par type de base de donn\u00e9es suppl\u00e9mentaire.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained\" style=\"background-color:#60d5f6;padding-top:32px;padding-bottom:32px\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Retracez d\u00e8s maintenant la lign\u00e9e de votre installation PostgreSQL.<\/h2>\n\n\n<p>Collez une d\u00e9finition de vue dans le visualiseur gratuit et visualisez le graphique au niveau des colonnes, ou contactez-nous pour analyser l&#039;ensemble de votre infrastructure PostgreSQL.<\/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=postgresql-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Essayez SQLFlow gratuitement<\/a><\/div>\n\n<div class=\"wp-block-button\"><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\": \"SoftwareApplication\",\n            \"name\": \"Gudu SQLFlow\",\n            \"applicationCategory\": \"DeveloperApplication\",\n            \"applicationSubCategory\": \"SQL Data Lineage Tool\",\n            \"operatingSystem\": \"Web, Linux, Windows, macOS\",\n            \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/postgresql-data-lineage\\\/\",\n            \"description\": \"Automated PostgreSQL data lineage: SQLFlow parses views, writable CTEs, ON CONFLICT upserts, and partitioned-table DDL to produce interactive column-level lineage diagrams.\",\n            \"featureList\": \"PostgreSQL dialect parser, column-level lineage, nested view chain resolution, writable CTE analysis, INSERT ON CONFLICT lineage, inheritance and partitioning support, indirect\\\/impact lineage, JDBC ingestion, DataHub\\\/Purview\\\/OpenMetadata export, AI lineage query\",\n            \"softwareVersion\": \"8.2.3\",\n            \"offers\": [\n                {\n                    \"@type\": \"Offer\",\n                    \"name\": \"SQLFlow Cloud Free\",\n                    \"price\": \"0\",\n                    \"priceCurrency\": \"USD\"\n                },\n                {\n                    \"@type\": \"Offer\",\n                    \"name\": \"SQLFlow Cloud Premium\",\n                    \"price\": \"49.99\",\n                    \"priceCurrency\": \"USD\",\n                    \"priceSpecification\": {\n                        \"@type\": \"UnitPriceSpecification\",\n                        \"price\": \"49.99\",\n                        \"priceCurrency\": \"USD\",\n                        \"billingIncrement\": 1,\n                        \"unitText\": \"MONTH\"\n                    }\n                },\n                {\n                    \"@type\": \"Offer\",\n                    \"name\": \"SQLFlow On-Premise\",\n                    \"price\": \"4800\",\n                    \"priceCurrency\": \"USD\"\n                }\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\": \"Does PostgreSQL have built-in data lineage?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"No. PostgreSQL tracks object-level dependencies in pg_depend for integrity purposes like DROP CASCADE, but it does not record how columns are transformed. Column-level lineage has to be derived by parsing the SQL in view definitions and scripts, which is what SQLFlow does.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does SQLFlow need access to my table data?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"No. SQLFlow performs static analysis of SQL code and optionally reads schema metadata to resolve references. It never reads rows. With the On-Premise edition, even the SQL text stays inside your network.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Can SQLFlow trace lineage through writable CTEs and ON CONFLICT upserts?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. The PostgreSQL dialect parser handles WITH ... INSERT\\\/UPDATE\\\/DELETE ... RETURNING statements and INSERT ... ON CONFLICT DO UPDATE, mapping both the insert and update column flows into the target table.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How are partitioned and inherited tables handled?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"SQLFlow parses PostgreSQL inheritance and declarative partitioning DDL, so lineage for queries against a parent table is attached at the parent level rather than splintering into per-partition edges.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How do I get lineage for an entire PostgreSQL database, not just one query?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Connect SQLFlow to the database over JDBC or extract metadata with the Grabit ingester. SQLFlow pulls all DDL and view definitions, analyzes them together, and maintains a persistent, incrementally updated lineage repository scaling to estates of 100+ databases.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How much does SQLFlow cost?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"SQLFlow Cloud starts free; premium accounts are $49.99\\\/month. SQLFlow On-Premise is $500\\\/month or $4,800 one-time per selected database type, plus $100\\\/month or $1,000 one-time per additional database type.\"\n                    }\n                }\n            ]\n        }\n    ]\n}<\/script>","protected":false},"excerpt":{"rendered":"<p>PostgreSQL data lineage is the column-level map of how data moves through your PostgreSQL views, CTEs, and DML: which base-table columns feed each view or report column, and which joins, filters, casts, and aggregates transform the data along the way. PostgreSQL&#8217;s own catalog tells you that objects depend on each other \u2014 pg_depend records that a view references a table \u2014 but it says nothing about how columns transform. Building real lineage means parsing the SQL itself, and that is exactly what Gudu SQLFlow does, with a dedicated PostgreSQL dialect parser rather than a generic ANSI grammar. Try it in\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\/6756"}],"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=6756"}],"version-history":[{"count":0,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/6756\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/media?parent=6756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}