{"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\/de\/postgresql-data-lineage\/","title":{"rendered":"PostgreSQL-Datenherkunft: Spaltenebene Herkunft aus Views und SQL"},"content":{"rendered":"<p><strong>PostgreSQL-Datenherkunft<\/strong> Es handelt sich um die Spalten\u00fcbersicht, die zeigt, wie Daten durch Ihre PostgreSQL-Views, CTEs und DML-Anweisungen flie\u00dfen: welche Basistabellenspalten die einzelnen View- oder Berichtspalten speisen und welche Joins, Filter, Casts und Aggregationen die Daten dabei transformieren. Der PostgreSQL-Katalog selbst zeigt Ihnen, dass Objekte voneinander abh\u00e4ngen. <code>pg_depend<\/code> Es wird zwar protokolliert, dass eine Ansicht auf eine Tabelle verweist \u2013 aber es wird nichts dar\u00fcber ausgesagt, wie Spalten transformiert werden. Um die tats\u00e4chliche Datenherkunft nachzuverfolgen, muss der SQL-Code selbst analysiert werden, und genau das ist es, was <strong>Gudu SQLFlow<\/strong> tut dies mit einem dedizierten PostgreSQL-Dialektparser anstelle einer generischen ANSI-Grammatik.<\/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>Probieren Sie es in 30 Sekunden:<\/strong> F\u00fcgen Sie eine beliebige PostgreSQL-Abfrage oder Ansichtsdefinition in die folgende ein: <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=postgresql-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">kostenloser SQLFlow-Lineage-Visualisierer<\/a> und erhalten Sie ein interaktives Stammbaumdiagramm auf Spaltenebene. Die Cloud-Edition bietet eine kostenlose Basisversion.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Warum pg_depend keine Abstammungsfragen beantworten kann<\/h2>\n\n\n\n<p>PostgreSQL f\u00fchrt akribische Abh\u00e4ngigkeitsaufzeichnungen. <code>pg_depend<\/code> Und <code>pg_rewrite<\/code> wissen, dass <code>v_region_revenue<\/code> kann nicht fallen gelassen werden, solange es sich darauf bezieht. <code>v_orders_enriched<\/code>, Und <code>Informationsschema<\/code> Ansichten zeigen an, auf welche Tabellen eine Ansicht zugreift. Das ist Abh\u00e4ngigkeitsverfolgung auf Objektebene, die f\u00fcr Folgendes entwickelt wurde: <code>DROP ... CASCADE<\/code> Sicherheit \u2013 nicht Abstammung.<\/p>\n\n\n\n<p>Was der Katalog Ihnen nicht verraten kann: welche spezifischen Spalten speisen <code>Einnahmen<\/code>, ob <code>Menge<\/code> wurde auf dem Weg geworfen oder angesammelt, ob <code>Status<\/code> Die Filterung des Ergebnisses, ohne darin aufzutauchen, und die Darstellung des vollst\u00e4ndigen Pfades bei drei oder vier Ebenen tief gestapelten Ansichten. Um Fragen wie \u201eWoher kommt diese Zahl?\u201c oder \u201eWas passiert, wenn ich diese Spalte entferne?\u201c zu beantworten, muss die Transformationslogik aus dem in den Ansichtsdefinitionen gespeicherten SQL-Text rekonstruiert werden \u2013 ein Parsing-Problem, keine Katalogabfrage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie SQLFlow die Datenherkunft von PostgreSQL erstellt<\/h2>\n\n\n\n<ol><li><strong>SQL-Daten erfassen.<\/strong> Einf\u00fcgen von Abfragen, Hochladen von Skriptdateien, Verbinden mit PostgreSQL \u00fcber JDBC, um DDL abzurufen und Definitionen direkt anzuzeigen, oder Importieren eines dbt-Manifests f\u00fcr dbt-on-Postgres-Projekte.<\/li>\n<li><strong>Parsen mit einer PostgreSQL-spezifischen Grammatik.<\/strong> SQLFlow basiert auf <a href=\"https:\/\/www.sqlparser.com\/\">Allgemeiner SQL-Parser (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>EINF\u00dcGEN ... BEI KONFLIKTEN<\/code>, Die <code>::<\/code> Cast-Operator, Vererbung und Partitionierung in DDL \u2013 und der zugeh\u00f6rige semantische Resolver werden erweitert <code>W\u00c4HLEN *<\/code>, l\u00f6st Spaltenreferenzen \u00fcber CTEs, Unterabfragen und Sichtdefinitionen auf und extrahiert dann Quell-Ziel-Beziehungen auf Spaltenebene.<\/li>\n<li><strong>Visualisieren und exportieren.<\/strong> Das Ergebnis ist ein interaktives Diagramm, mit dem Sie die Datenstr\u00f6me von jeder Spalte aus vor- und nachgelagert verfolgen k\u00f6nnen. Es l\u00e4sst sich als JSON, CSV oder PNG exportieren oder \u00fcber eine REST-API abfragen.<\/li><\/ol>\n\n\n\n<p>PostgreSQL ist einer von 39 Dialekten, f\u00fcr die SQLFlow Parser bereitstellt \u2013 darunter die PostgreSQL-basierten Engines Greenplum, Amazon Redshift und EDB Postgres. Jede dieser Engines verf\u00fcgt \u00fcber einen eigenen Parser, da sie sich in f\u00fcr die Lineage-Engine relevanten Aspekten vom PostgreSQL-Kern unterscheiden. Die vollst\u00e4ndige Methodik wird im [Dokument\/der Dokumentation einf\u00fcgen] beschrieben. <a href=\"https:\/\/www.gudusoft.com\/de\/sql-datenherkunftstool\/\">\u00dcberblick \u00fcber SQL-Datenherkunftstools<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eine verschachtelte Ansichtskette bis zu den Basistabellen zur\u00fcckverfolgen<\/h2>\n\n\n\n<p>View-on-View-Stacks sind die Standardmethode, mit der Logik in PostgreSQL akkumuliert wird, und hier st\u00f6\u00dft die manuelle Nachverfolgung an ihre Grenzen. Betrachten wir eine zweistufige Kette:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE VIEW v_orders_enriched AS SELECT o.order_id, o.customer_id, o.amount::numeric(12,2) AS amount, c.region FROM orders o JOIN customers c ON c.customer_id = o.customer_id WHERE o.status = &#039;shipped&#039;; CREATE VIEW v_region_revenue AS SELECT region, SUM(amount) AS revenue FROM v_orders_enriched GROUP BY region;<\/code><\/pre>\n\n\n\n<p>Fragen Sie SQLFlow, wo <code>v_region_revenue.revenue<\/code> kommt von und l\u00f6st die gesamte Kette auf: <code>Einnahmen<\/code> Ist <code>SUMME()<\/code> \u00fcber <code>v_orders_enriched.amount<\/code>, was ein <code>numeric(12,2)<\/code> Besetzung <code>Bestellungen.Betrag<\/code>Das Diagramm zeigt jeden Schritt \u2013 Basistabelle, Zwischenansicht, Aggregat \u2013 als einen detailliert erfassbaren Pfad, nicht als eine vereinfachte Annahme. Es verdeutlicht auch, was bei einer oberfl\u00e4chlichen Betrachtung \u00fcbersehen wird: <code>Bestellungen.Status<\/code> Sie erscheint nie in den Ergebnissen, dennoch h\u00e4ngt jede Umsatzzahl davon ab. <code>WHERE o.status = &#039;shipped&#039;<\/code> Filter. SQLFlow protokolliert dies als indirekte Herkunft (mehr dazu weiter unten).<\/p>\n\n\n\n<p>Dieselbe Aufl\u00f6sung funktioniert in jeder Tiefe. In einem realen Schema, in dem Ansichten f\u00fcnf Ebenen tief gestapelt sind und die H\u00e4lfte davon verwendet wird <code>W\u00c4HLEN *<\/code>SQLFlow erweitert die Sterne anhand der tats\u00e4chlichen Tabellendefinitionen, die \u00fcber JDBC abgerufen werden, sodass die Herkunft spaltengenau bleibt, selbst wenn der SQL-Text die Spalten nicht benennt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PostgreSQL-Konstrukte, die generische Parser beeintr\u00e4chtigen<\/h2>\n\n\n\n<p>Tools, die PostgreSQL als \u201eungef\u00e4hr ANSI SQL\u201c behandeln, versagen genau bei den Anweisungen, die den gr\u00f6\u00dften Datenfluss aufweisen. Diese werden alle vom PostgreSQL-Dialektparser von SQLFlow verarbeitet:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Konstrukt<\/th><th>Warum es f\u00fcr die Abstammung wichtig ist<\/th><\/tr><\/thead><tbody>\n<tr><td>Beschreibbare CTEs (<code>MIT ... EINF\u00dcGEN\/AKTUALISIEREN\/L\u00d6SCHEN ... ZUR\u00dcCKGEBEN<\/code>)<\/td><td>Eine einzelne Anweisung liest und schreibt gleichzeitig: Die DML-Ausgabe der CTE speist die \u00e4u\u00dfere Abfrage. Die Datenherkunft muss die ge\u00e4nderte Tabelle mit der <code>R\u00dcCKKEHR<\/code> Spalten und das Endergebnis in einem Diagramm.<\/td><\/tr>\n<tr><td><code>EINF\u00dcGEN ... BEI KONFLIKT AKTUALISIEREN<\/code><\/td><td>Upserts leiten Daten \u00fcber zwei Pfade \u2013 den Einf\u00fcgepfad und den Aktualisierungspfad. <code>AUSGESCHLOSSEN<\/code> Pseudotabelle. Beides sind reale Spaltenfl\u00fcsse in die Zieltabelle.<\/td><\/tr>\n<tr><td>Tabellenvererbung und deklarative Partitionierung<\/td><td>Abfragen einer \u00fcbergeordneten Tabelle lesen implizit deren untergeordnete Tabellen. SQLFlow analysiert das Vererbungs- und Partitionierungs-DDL, sodass die Herkunft korrekt auf Ebene der \u00fcbergeordneten Tabelle verkn\u00fcpft wird, anstatt pro Partition fragmentiert zu werden.<\/td><\/tr>\n<tr><td>Verkettete CTEs und verschachtelte Ansichten<\/td><td>Spaltenreferenzen m\u00fcssen \u00fcber jede Zwischenschicht hinweg aufgel\u00f6st werden, einschlie\u00dflich CTEs, die auf fr\u00fchere CTEs verweisen, bis hin zu den physischen Basistabellen.<\/td><\/tr>\n<tr><td><code>::<\/code> Casts und Ausdrucksspalten<\/td><td>Jede Ausgabespalte wird mithilfe der angewendeten Funktionen und Typumwandlungen ihren Quellen zugeordnet, sodass Sie nicht nur sehen k\u00f6nnen <em>Wo<\/em> ein Wert entstand aus, aber <em>Was ist damit geschehen?<\/em>.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Direkte vs. indirekte Abstammung: Die Filterspalten, die Sie sonst \u00fcbersehen w\u00fcrden<\/h2>\n\n\n\n<p>SQLFlow unterscheidet <strong>direkte Abstammung<\/strong> \u2014 Spaltenwerte, die physisch in eine Ausgabe flie\u00dfen \u2014 von <strong>indirekte (Einfluss-)Abstammungslinie<\/strong> \u2014 Spalten verwendet in <code>WO<\/code> Klauseln, <code>VERBINDEN<\/code> Bedingungen und <code>GRUPPE NACH<\/code> Schl\u00fcssel, die das Ergebnis beeinflussen, ohne darin zu landen. Im obigen Beispiel: <code>Bestellungen.Betrag<\/code> ist direkte Abstammung f\u00fcr <code>Einnahmen<\/code>; <code>Bestellungen.Status<\/code> und beide <code>Kunden-ID<\/code> Join-Schl\u00fcssel sind indirekt.<\/p>\n\n\n\n<p>Die Unterscheidung l\u00e4sst sich im Diagramm umschalten und hat Auswirkungen auf reale Entscheidungen. Wenn Sie planen, den Definitionsbereich zu \u00e4ndern, <code>Bestellungen.Status<\/code>Die direkte Herkunftsanalyse besagt, dass keine Abh\u00e4ngigkeiten bestehen; die indirekte Herkunftsanalyse zeigt jeden Umsatzbericht an, der im Hintergrund gefiltert wird. Die meisten Herkunftsanalyse-Tools bilden diese Beziehungsart \u00fcberhaupt nicht ab.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Von einer einzelnen Abfrage bis hin zu einem kompletten PostgreSQL-System<\/h2>\n\n\n\n<p>F\u00fcr eine einzelne, komplexe View-Kette reicht der kostenlose Tarif von SQLFlow Cloud aus: einf\u00fcgen, analysieren, detailliert aufschl\u00fcsseln. Dar\u00fcber hinaus:<\/p>\n\n\n\n<ul><li><strong>Vollst\u00e4ndige Datenbankscans:<\/strong> Stellen Sie eine Verbindung \u00fcber JDBC her (oder verwenden Sie den Grabit-Metadatenextraktor), um alle Ansichten und Objektdefinitionen abzurufen und ein persistentes Herkunftsarchiv zu erstellen. In Unternehmensumgebungen werden Datenbanken mit \u00fcber 100 Datenbanken und mehr als einer Million Spalten im Batch-Verfahren gescannt, wobei inkrementelle Wiederholungsscans durchgef\u00fchrt werden.<\/li>\n<li><strong>Katalogintegration:<\/strong> Exportadapter \u00fcbertragen die Datenherkunft auf Spaltenebene in DataHub, Microsoft Purview und OpenMetadata, sodass SQLFlow als Herkunfts-Engine f\u00fcr den bereits laufenden Katalog dienen kann.<\/li>\n<li><strong>Luftabgeschottete Umgebungen:<\/strong> <a href=\"https:\/\/www.gudusoft.com\/de\/sqlflow-on-premise-version\/\">SQLFlow vor Ort<\/a> L\u00e4uft auf Docker oder Kubernetes innerhalb Ihres Netzwerks f\u00fcr $500\/Monat oder einmalig $4.800 pro Datenbanktyp und ist auf zwei Servern installierbar. SQL-Text verl\u00e4sst Ihre Infrastruktur niemals.<\/li>\n<li><strong>Datenschutz durch Technikgestaltung:<\/strong> SQLFlow f\u00fchrt ausschlie\u00dflich eine statische Analyse des SQL-Codes und der Schema-Metadaten durch. Es liest niemals die Zeilen Ihrer Tabellen.<\/li><\/ul>\n\n\n\n<p>Seit Version 8.2.3 k\u00f6nnen Sie den resultierenden Graphen auch in einfachem Englisch abfragen \u2013 \u201ewelche Ansichten h\u00e4ngen von <code>Bestellungen.Betrag<\/code>?&quot; \u2014 wobei jede Tabelle und Spalte in der Antwort vor ihrer Anzeige anhand der analysierten Abstammung validiert wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie sieht es mit Open-Source-Tools zur PostgreSQL-Lineage aus?<\/h2>\n\n\n\n<p>Open-Source-Parser wie <code>sqllineage<\/code> Und <code>sqlglot<\/code> Sie eignen sich hervorragend, um die Datenherkunft auf Tabellen- und Spaltenebene aus einzelnen Abfragen zu extrahieren, und f\u00fcr einige wenige saubere SELECT-Anweisungen sind sie m\u00f6glicherweise v\u00f6llig ausreichend. Die L\u00fccken zeigen sich jedoch in produktiven PostgreSQL-Umgebungen: Aufl\u00f6sung <code>W\u00c4HLEN *<\/code> Durch View-Ketten werden Live-Schema-Metadaten, beschreibbare CTEs und <code>\u00dcBER KONFLIKTE<\/code> Upserts ben\u00f6tigen dialektgenaue Grammatiken; die indirekte Herkunft \u00fcber Filter und Join-Schl\u00fcssel wird \u00fcblicherweise nicht modelliert; und die Extraktion der Herkunft ist nicht dasselbe wie deren Visualisierung, Speicherung und Vergleich \u00fcber Tausende von Objekten hinweg. Wenn Sie eine Evaluierung durchf\u00fchren, lassen Sie Ihren komplexesten View-Stack und Ihren kompliziertesten Upsert beides durchlaufen und vergleichen Sie die Graphen.<\/p>\n\n\n\n<p>Wenn in Ihrer Umgebung verschiedene Engines verwendet werden, deckt dieselbe Parserfamilie diese mit demselben Ausgabeformat ab \u2013 siehe die zugeh\u00f6rigen Seiten f\u00fcr <a href=\"https:\/\/www.gudusoft.com\/de\/mysql-datenherkunft\/\">MySQL-Datenherkunft<\/a>, <a href=\"https:\/\/www.gudusoft.com\/de\/datenlinie-der-rotverschiebung\/\">Redshift-Datenherkunft<\/a>, Und <a href=\"https:\/\/www.gudusoft.com\/de\/greenplum-datenherkunft\/\">Greenplum-Datenherkunft<\/a>oder die <a href=\"https:\/\/www.gudusoft.com\/de\/datenherkunft-wissensdatenbank\/\">Datenherkunfts-Wissensbasis<\/a> f\u00fcr Konzepte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">H\u00e4ufig gestellte Fragen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Verf\u00fcgt PostgreSQL \u00fcber eine integrierte Datenherkunftsnachverfolgung?<\/h3>\n\n\n<p>Nein. PostgreSQL verfolgt Abh\u00e4ngigkeiten auf Objektebene in <code>pg_depend<\/code> \u2014 welche Ansichten auf welche Tabellen verweisen \u2014 aus Integrit\u00e4tsgr\u00fcnden wie <code>DROP ... CASCADE<\/code>Es wird nicht protokolliert, wie Spalten transformiert werden. Die Herkunft der Spalten muss durch Parsen des SQL-Codes in Ansichtsdefinitionen und Skripten ermittelt werden, was SQLFlow leistet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ben\u00f6tigt SQLFlow Zugriff auf meine Tabellendaten?<\/h3>\n\n\n<p>Nein. SQLFlow f\u00fchrt eine statische Analyse des SQL-Codes durch und liest optional Schema-Metadaten (Tabellen- und Spaltendefinitionen), um Referenzen aufzul\u00f6sen. Es liest niemals Zeilen. Bei der On-Premise-Edition bleibt sogar der SQL-Text innerhalb Ihres Netzwerks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kann SQLFlow die Herkunft von beschreibbaren CTEs und ON CONFLICT-Upserts nachverfolgen?<\/h3>\n\n\n<p>Ja. Der PostgreSQL-Dialektparser verarbeitet <code>MIT ... EINF\u00dcGEN\/AKTUALISIEREN\/L\u00d6SCHEN ... ZUR\u00dcCKGEBEN<\/code> Aussagen und <code>EINF\u00dcGEN ... BEI KONFLIKT AKTUALISIEREN<\/code>, wobei sowohl der Einf\u00fcge- als auch der Aktualisierungsspaltenfluss in die Zieltabelle abgebildet wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie werden partitionierte und vererbte Tabellen behandelt?<\/h3>\n\n\n<p>SQLFlow analysiert die Vererbung und die deklarative Partitionierung von PostgreSQL mittels DDL, sodass die Herkunft von Abfragen gegen eine \u00fcbergeordnete Tabelle auf der Ebene der \u00fcbergeordneten Tabelle angeh\u00e4ngt wird, anstatt in partitionspezifische Kanten aufgeteilt zu werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie erhalte ich die Herkunftshistorie f\u00fcr eine gesamte PostgreSQL-Datenbank, nicht nur f\u00fcr eine einzelne Abfrage?<\/h3>\n\n\n<p>Verbinden Sie SQLFlow \u00fcber JDBC mit der Datenbank oder extrahieren Sie Metadaten mit dem Grabit Ingester. SQLFlow erfasst alle DDL- und View-Definitionen, analysiert sie gemeinsam und pflegt ein persistentes, inkrementell aktualisiertes Lineage-Repository \u2013 skalierbar auf Umgebungen mit mehr als 100 Datenbanken.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie viel kostet SQLFlow?<\/h3>\n\n\n<p>SQLFlow Cloud ist kostenlos; Premium-Konten kosten $49,99\/Monat. SQLFlow On-Premise kostet $500\/Monat oder einmalig $4.800 pro ausgew\u00e4hltem Datenbanktyp, zuz\u00fcglich $100\/Monat oder einmalig $1.000 f\u00fcr jeden weiteren Datenbanktyp.<\/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\">Verfolgen Sie jetzt Ihre PostgreSQL-Herkunft.<\/h2>\n\n\n<p>F\u00fcgen Sie eine Ansichtsdefinition in den kostenlosen Visualisierer ein und sehen Sie sich das Diagramm auf Spaltenebene an, oder sprechen Sie mit uns \u00fcber das Scannen Ihrer gesamten PostgreSQL-Umgebung.<\/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\">Testen Sie SQLFlow kostenlos<\/a><\/div>\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/de\/kontakt\/\">Fordern Sie eine Enterprise-Demo an<\/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\/de\/wp-json\/wp\/v2\/pages\/6756"}],"collection":[{"href":"https:\/\/www.gudusoft.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gudusoft.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/de\/wp-json\/wp\/v2\/comments?post=6756"}],"version-history":[{"count":0,"href":"https:\/\/www.gudusoft.com\/de\/wp-json\/wp\/v2\/pages\/6756\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/de\/wp-json\/wp\/v2\/media?parent=6756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}