{"id":6765,"date":"2026-07-12T02:08:18","date_gmt":"2026-07-12T10:08:18","guid":{"rendered":"https:\/\/www.gudusoft.com\/clickhouse-data-lineage\/"},"modified":"2026-07-12T02:08:18","modified_gmt":"2026-07-12T10:08:18","slug":"clickhouse-data-lineage","status":"publish","type":"page","link":"https:\/\/www.gudusoft.com\/fr\/clickhouse-data-lineage\/","title":{"rendered":"ClickHouse Data Lineage\u00a0: Suivi des colonnes \u00e0 travers les vues mat\u00e9rialis\u00e9es"},"content":{"rendered":"<p><strong>Tra\u00e7abilit\u00e9 des donn\u00e9es ClickHouse<\/strong> Il s&#039;agit de la cartographie du flux des colonnes dans votre pipeline ClickHouse\u00a0: quelles tables du moteur Kafka, quelles tables MergeTree et quelles requ\u00eates SELECT de vues mat\u00e9rialis\u00e9es alimentent chaque colonne en aval, et quelles fonctions et \u00e9tats agr\u00e9g\u00e9s transforment les donn\u00e9es tout au long du processus. Les vues mat\u00e9rialis\u00e9es ClickHouse \u00e9tant enti\u00e8rement d\u00e9finies en SQL, la tra\u00e7abilit\u00e9 pr\u00e9cise des donn\u00e9es est obtenue par l&#039;analyse de ce code SQL. <a href=\"https:\/\/www.gudusoft.com\/fr\/outil-de-lignee-de-donnees-sql\/\">Gudu SQLFlow<\/a> Il utilise pour cela un analyseur syntaxique ClickHouse d\u00e9di\u00e9 et renvoie des diagrammes de lignage interactifs au niveau des colonnes.<\/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-le maintenant\u00a0:<\/strong> collez votre <code>CR\u00c9ER UNE VUE MAT\u00c9RIALIS\u00c9E<\/code> d\u00e9clarations dans le <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=clickhouse-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Visualiseur SQLFlow gratuit<\/a>S\u00e9lectionnez le dialecte ClickHouse et obtenez en quelques secondes un diagramme de lignage au niveau des colonnes de votre cha\u00eene MV.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi la tra\u00e7abilit\u00e9 des donn\u00e9es de ClickHouse est un probl\u00e8me de vue mat\u00e9rialis\u00e9e<\/h2>\n\n\n\n<p>Dans la plupart des entrep\u00f4ts de donn\u00e9es, la logique de transformation est g\u00e9r\u00e9e par des traitements par lots planifi\u00e9s. Dans ClickHouse, elle est g\u00e9r\u00e9e par des vues mat\u00e9rialis\u00e9es. Une vue mat\u00e9rialis\u00e9e ClickHouse est un d\u00e9clencheur d&#039;insertion\u00a0: chaque bloc \u00e9crit dans la table source est trait\u00e9 par la requ\u00eate SELECT de la vue mat\u00e9rialis\u00e9e et ins\u00e9r\u00e9 dans une table cible. Les pipelines de production les encha\u00eenent\u00a0: une table du moteur Kafka alimente une vue mat\u00e9rialis\u00e9e qui stocke les lignes brutes dans une table MergeTree\u00a0; d&#039;autres vues mat\u00e9rialis\u00e9es lisent cette table et alimentent les cumuls SummingMergeTree ou AggregatingMergeTree\u00a0; enfin, les tableaux de bord interrogent ces cumuls.<\/p>\n\n\n\n<p>Cette conception est rapide, mais elle disperse votre flux de donn\u00e9es sur de nombreux petits processus. <code>CR\u00c9ER UNE VUE MAT\u00c9RIALIS\u00c9E<\/code> relev\u00e9s. Lorsqu&#039;une donn\u00e9e du tableau de bord semble incorrecte ou qu&#039;une personne souhaite supprimer une colonne d&#039;un sujet Kafka, il faut reconstruire la cha\u00eene manuellement\u00a0: requ\u00eate <code>syst\u00e8me.tables<\/code>, lisez chaque clip vid\u00e9o <code>cr\u00e9er_requ\u00eate_table<\/code>, suivez chaque <code>\u00c0<\/code> R\u00e9p\u00e9tez l&#039;op\u00e9ration jusqu&#039;\u00e0 atteindre les feuilles. Chaque it\u00e9ration correspond \u00e0 une requ\u00eate SELECT avec ses propres expressions, filtres et GROUP BY\u00a0; ainsi, pour analyser correctement une seule colonne, il faut analyser le code SQL, et non rechercher des noms de tables.<\/p>\n\n\n\n<p>SQLFlow automatise pr\u00e9cis\u00e9ment cette \u00e9tape. Son analyseur ClickHouse est l&#039;un des 39 analyseurs sp\u00e9cifiques \u00e0 un dialecte (et non une grammaire ANSI g\u00e9n\u00e9rique), donc les constructions propres \u00e0 ClickHouse \u2014 les clauses du moteur, <code>Fonction d&#039;agr\u00e9gation<\/code> colonnes, <code>-\u00c9tat<\/code> combinateurs, fonctions comme <code>\u00e0 ce jour<\/code> et <code>unique<\/code> \u2014 sont comprises plut\u00f4t qu&#039;ignor\u00e9es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple\u00a0: suivi d\u2019une colonne de Kafka vers un AggregatingMergeTree<\/h2>\n\n\n\n<p>Voici une cha\u00eene d&#039;ingestion ClickHouse typique \u00e0 deux sauts\u00a0: une table du moteur Kafka, une MV qui stocke les \u00e9v\u00e9nements bruts dans MergeTree et une seconde MV qui conserve un cumul pr\u00e9-agr\u00e9g\u00e9 dans une table AggregatingMergeTree.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE events_kafka ( event_time DateTime, user_id UInt64, event_type LowCardinality(String), revenue Decimal(18, 2) ) ENGINE = Kafka SETTINGS kafka_broker_list = &#039;kafka:9092&#039;, kafka_topic_list = &#039;events&#039;, kafka_format = &#039;JSONEachRow&#039;; CREATE TABLE events_raw ( event_time DateTime, user_id UInt64, event_type LowCardinality(String), revenue Decimal(18, 2) ) ENGINE = MergeTree ORDER BY (event_type, event_time); CREATE MATERIALIZED VIEW mv_events_raw TO events_raw AS SELECT event_time, user_id, event_type, revenue FROM events_kafka; CREATE TABLE revenue_daily ( day Date, event_type LowCardinality(String), total_revenue AggregateFunction(sum, Decimal(18, 2)), buyers AggregateFunction(uniq, UInt64) ) ENGINE = AggregatingMergeTree ORDER BY (day, event_type); CREATE MATERIALIZED VIEW mv_revenue_daily TO revenue_daily AS SELECT toDate(event_time) AS day, event_type, sumState(revenue) AS total_revenue, uniqState(user_id) AS buyers FROM events_raw WHERE event_type = &#039;purchase&#039; GROUP BY day, event_type;<\/code><\/pre>\n\n\n\n<p>Injectez ces quatre instructions dans SQLFlow, qui r\u00e9sout la cha\u00eene compl\u00e8te. Pour le tableau r\u00e9capitulatif, il affiche, par colonne de sortie\u00a0:<\/p>\n\n\n\n<ul><li><code>revenu_quotidien.revenu_total<\/code> vient de <code>\u00e9v\u00e9nements_raw.revenu<\/code> \u00e0 travers <code>sommeState()<\/code>, qui \u00e0 son tour provient de <code>\u00e9v\u00e9nements_kafka.revenu<\/code> \u00e0 travers <code>mv_events_raw<\/code> \u2014 un chemin complet de Kafka \u00e0 rollup dans un seul diagramme.<\/li>\n<li><code>revenu_quotidien.jour<\/code> d\u00e9rive de <code>\u00e9v\u00e9nements_brut.temps_\u00e9v\u00e9nement<\/code> via <code>\u00e0 ce jour()<\/code>; la fonction appliqu\u00e9e est enregistr\u00e9e sur le bord, elle n&#039;est pas supprim\u00e9e.<\/li>\n<li><code>revenus_quotidiens.acheteurs<\/code> d\u00e9rive de <code>\u00e9v\u00e9nements_raw.user_id<\/code> via <code>uniqState()<\/code>.<\/li>\n<li><code>events_raw.event_type<\/code> influences <em>chaque<\/em> colonne de cumul indirectement, en raison de <code>O\u00d9 type_\u00e9v\u00e9nement = &#039;achat&#039;<\/code> filtre et le <code>GROUPER PAR<\/code> \u2014 SQLFlow les consid\u00e8re comme une lign\u00e9e indirecte, distincte des ar\u00eates de flux de donn\u00e9es direct.<\/li><\/ul>\n\n\n\n<p>Ce dernier point est plus important dans ClickHouse que dans la plupart des autres moteurs. L&#039;exactitude des cumuls d\u00e9pend souvent de colonnes de filtre qui n&#039;apparaissent jamais dans le r\u00e9sultat. Si quelqu&#039;un renomme <code>type_\u00e9v\u00e9nement<\/code> Dans le sujet Kafka, la tra\u00e7abilit\u00e9 au niveau de la table indique \u00ab le cumul d\u00e9pend de events_raw \u00bb \u2014 vrai et inutile. La tra\u00e7abilit\u00e9 au niveau de la colonne avec des liens indirects indique \u00ab<code>revenu_total<\/code> et <code>acheteurs<\/code> \u00ab\u00a0Les deux sont filtr\u00e9s par cette colonne pr\u00e9cise\u00a0\u00bb, ce qui constitue la r\u00e9ponse dont vous avez besoin avant de d\u00e9ployer la modification. La plupart des outils de tra\u00e7abilit\u00e9 ne mod\u00e9lisent pas du tout la tra\u00e7abilit\u00e9 indirecte\u00a0; SQLFlow, quant \u00e0 lui, en fait une couche activable\/d\u00e9sactivable s\u00e9par\u00e9ment dans le diagramme.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Que SQLFlow extrait-il de ClickHouse SQL ?<\/h2>\n\n\n\n<ul><li><strong>Lign\u00e9e au niveau de la colonne\u00a0:<\/strong> Pour chaque colonne de sortie, les colonnes sources exactes qui l&#039;alimentent, ainsi que les fonctions, conversions, sous-requ\u00eates, jointures et op\u00e9rateurs ensemblistes utilis\u00e9s. Les r\u00e9f\u00e9rences aux colonnes sont r\u00e9solues via des CTE, des sous-requ\u00eates, des vues, etc. <code>S\u00c9LECTIONNER *<\/code> expansion.<\/li>\n<li><strong>Lign\u00e9e directe vs. indirecte\u00a0:<\/strong> Les ar\u00eates de flux de donn\u00e9es pur sont maintenues s\u00e9par\u00e9es des ar\u00eates d&#039;influence (colonnes utilis\u00e9es dans <code>O\u00d9<\/code>, <code>GROUPER PAR<\/code>, et les conditions de jonction), et chaque couche peut \u00eatre activ\u00e9e\/d\u00e9sactiv\u00e9e ind\u00e9pendamment.<\/li>\n<li><strong>Cha\u00eenes MV multi-sauts\u00a0:<\/strong> \u00c9tant donn\u00e9 que chaque requ\u00eate SELECT de MV est analys\u00e9e et que sa table cible est li\u00e9e, les vues mat\u00e9rialis\u00e9es cha\u00een\u00e9es se r\u00e9solvent en un seul graphe continu allant de la table d&#039;ingestion au cumul final.<\/li>\n<li><strong>Diagrammes interactifs et donn\u00e9es structur\u00e9es\u00a0:<\/strong> Explorez le diagramme en d\u00e9tail, exportez la lign\u00e9e au format JSON, CSV ou PNG, ou r\u00e9cup\u00e9rez-la par programmation via l&#039;API REST.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Comment importer votre SQL ClickHouse dans SQLFlow<\/h2>\n\n\n\n<ol><li><strong>Coller ou t\u00e9l\u00e9charger.<\/strong> Copiez les d\u00e9finitions DDL et MV (par exemple, le <code>cr\u00e9er_requ\u00eate_table<\/code> valeurs hors de <code>syst\u00e8me.tables<\/code>Vous pouvez les int\u00e9grer \u00e0 votre navigateur ou t\u00e9l\u00e9charger vos fichiers de migration. C&#039;est la m\u00e9thode la plus rapide pour auditer un pipeline.<\/li>\n<li><strong>Se connecter via JDBC.<\/strong> SQLFlow peut extraire les m\u00e9tadonn\u00e9es d&#039;une base de donn\u00e9es en direct via JDBC, de sorte que les d\u00e9finitions de tables et de vues proviennent directement du serveur au lieu de fichiers potentiellement obsol\u00e8tes.<\/li>\n<li><strong>Automatiser l&#039;extraction.<\/strong> The Grabit\/SQLFlow-ingester utility extracts metadata on a schedule for repeatable, whole-estate scans.<\/li><\/ol>\n\n\n\n<p>Dans tous les modes, SQLFlow effectue uniquement une analyse statique du code SQL. Il ne lit jamais les lignes de vos tables. <a href=\"https:\/\/www.gudusoft.com\/fr\/sqlflow-on-premise-version\/\">\u00c9dition sur site<\/a> (Docker\/Kubernetes, compatible avec l&#039;isolation physique) m\u00eame le texte SQL ne quitte jamais votre r\u00e9seau \u2014 pertinent si votre cluster ClickHouse transporte des donn\u00e9es d&#039;\u00e9v\u00e9nements que vous ne pouvez pas envoyer \u00e0 un SaaS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9thodes d&#039;obtention de la lign\u00e9e \u00e0 partir de ClickHouse, compar\u00e9es<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Approche<\/th><th>Bon en<\/th><th>Gap pour les cha\u00eenes ClickHouse MV<\/th><\/tr><\/thead><tbody>\n<tr><td>En lisant <code>syst\u00e8me.tables<\/code> manuellement<\/td><td>Gratuit, toujours \u00e0 jour, sans outil<\/td><td>Vous devenez l&#039;analyseur syntaxique\u00a0; les cha\u00eenes \u00e0 sauts multiples et les chemins par colonne sont reconstruits manuellement et finissent par devenir obsol\u00e8tes dans votre m\u00e9moire.<\/td><\/tr>\n<tr><td>Analyseurs syntaxiques open source (<code>SQL Lineage<\/code>, <code>sqlglot<\/code>)<\/td><td>Scripting des v\u00e9rifications de lignage pour les requ\u00eates individuelles au sein de vos propres outils<\/td><td>Ce sont des biblioth\u00e8ques, et non des produits de lignage\u00a0: l\u2019assemblage d\u2019instructions MV cha\u00een\u00e9es en un graphe navigable au niveau des colonnes, avec des diagrammes et une s\u00e9paration de lignage indirect, est du code que vous \u00e9crivez et maintenez.<\/td><\/tr>\n<tr><td>Plateformes ax\u00e9es sur le catalogue<\/td><td>Flux de gouvernance, propri\u00e9t\u00e9, glossaire m\u00e9tier pour l&#039;ensemble de la pile<\/td><td>La profondeur de la lign\u00e9e d\u00e9pend de leur analyse SQL par dialecte\u00a0; un analyseur sp\u00e9cialis\u00e9 va g\u00e9n\u00e9ralement plus loin dans l\u2019analyse de la lign\u00e9e ClickHouse au niveau des colonnes.<\/td><\/tr>\n<tr><td>Gudu SQLFlow<\/td><td>Tra\u00e7abilit\u00e9 ClickHouse au niveau des colonnes \u00e0 partir d&#039;un analyseur syntaxique de dialecte d\u00e9di\u00e9, avec s\u00e9paration directe\/indirecte et diagrammes<\/td><td>Outil commercial\u00a0; analyse statique par conception \u2014 il cartographie la logique SQL, et non la t\u00e9l\u00e9m\u00e9trie des t\u00e2ches d&#039;ex\u00e9cution.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p>Ces approches combinent \u00e9galement les avantages suivants\u00a0: les d\u00e9ploiements SQLFlow d\u2019entreprise exportent la tra\u00e7abilit\u00e9 vers DataHub, Microsoft Purview et OpenMetadata, permettant ainsi \u00e0 SQLFlow de servir de moteur d\u2019analyse syntaxique pour le catalogue existant. \u00c0 grande \u00e9chelle, il effectue des analyses par lots de plus de 100 bases de donn\u00e9es et de plus d\u2019un million de colonnes gr\u00e2ce \u00e0 des analyses incr\u00e9mentales et un r\u00e9f\u00e9rentiel de tra\u00e7abilit\u00e9 persistant\u00a0\u2014 ClickHouse s\u2019int\u00e8gre parfaitement \u00e0 votre infrastructure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ClickHouse vit rarement seul<\/h2>\n\n\n\n<p>Le service en temps r\u00e9el dans ClickHouse fonctionne g\u00e9n\u00e9ralement en parall\u00e8le avec d&#039;autres moteurs\u00a0: une couche de f\u00e9d\u00e9ration, des outils d&#039;analyse locale et un entrep\u00f4t de donn\u00e9es par lots. SQLFlow analyse tous ces \u00e9l\u00e9ments avec le m\u00eame moteur\u00a0: le General SQL Parser, d\u00e9velopp\u00e9 commercialement depuis le milieu des ann\u00e9es\u00a02000 et valid\u00e9 sur environ 13\u00a0600\u00a0jeux de test par dialecte. Ainsi, la tra\u00e7abilit\u00e9 est conserv\u00e9e au niveau des colonnes, ind\u00e9pendamment du moteur utilis\u00e9. Si votre infrastructure inclut ces moteurs, consultez les guides associ\u00e9s. <a href=\"https:\/\/www.gudusoft.com\/fr\/lignee-de-donnees-trino\/\">Tra\u00e7abilit\u00e9 des donn\u00e9es Trino<\/a> pour les couches de requ\u00eates f\u00e9d\u00e9r\u00e9es et <a href=\"https:\/\/www.gudusoft.com\/fr\/lignee-des-donnees-duckdb\/\">Tra\u00e7abilit\u00e9 des donn\u00e9es DuckDB<\/a> pour les analyses en temps r\u00e9el, ou parcourez 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>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Foire aux questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow peut-il retracer la lign\u00e9e \u00e0 travers des vues mat\u00e9rialis\u00e9es ClickHouse cha\u00een\u00e9es\u00a0?<\/h3>\n\n\n<p>Oui. Chaque requ\u00eate SELECT de vue mat\u00e9rialis\u00e9e est analys\u00e9e et sa table cible est li\u00e9e au graphe. Ainsi, une table du moteur Kafka alimentant une vue mat\u00e9rialis\u00e9e, qui alimente une table MergeTree, qui alimente une autre vue mat\u00e9rialis\u00e9e dans un AggregatingMergeTree, se r\u00e9sout en un seul chemin continu au niveau des colonnes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow comprend-il la syntaxe SQL sp\u00e9cifique \u00e0 ClickHouse\u00a0?<\/h3>\n\n\n<p>Oui. ClickHouse est l&#039;un des 39 analyseurs syntaxiques sp\u00e9cifiques \u00e0 un dialecte de SQLFlow. Il s&#039;agit d&#039;une grammaire d\u00e9di\u00e9e, et non d&#039;un analyseur ANSI g\u00e9n\u00e9rique\u00a0; par cons\u00e9quent, les constructions ClickHouse telles que les clauses du moteur et les colonnes d&#039;\u00e9tat des fonctions d&#039;agr\u00e9gation sont analys\u00e9es et non ignor\u00e9es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQLFlow a-t-il besoin d&#039;acc\u00e9der \u00e0 mes donn\u00e9es ClickHouse\u00a0?<\/h3>\n\n\n<p>Non. SQLFlow effectue une analyse statique du code SQL et, en option, des m\u00e9tadonn\u00e9es de sch\u00e9ma r\u00e9cup\u00e9r\u00e9es via JDBC. Il ne lit jamais les lignes de vos tables, et l&#039;\u00e9dition sur site conserve m\u00eame le texte SQL au sein de votre r\u00e9seau.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Que signifie \u00ab lign\u00e9e indirecte \u00bb pour un regroupement ClickHouse ?<\/h3>\n\n\n<p>Une colonne utilis\u00e9e dans le filtre WHERE ou le GROUP BY d&#039;une vue mat\u00e9rialis\u00e9e n&#039;appara\u00eet jamais dans le r\u00e9sultat du cumul, mais elle d\u00e9termine les lignes agr\u00e9g\u00e9es. SQLFlow enregistre ces lignes comme des liens de lignage indirects, distincts du flux de donn\u00e9es direct, et permet d&#039;afficher ou de masquer chaque couche dans le diagramme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quel est le co\u00fbt de SQLFlow pour la tra\u00e7abilit\u00e9 ClickHouse\u00a0?<\/h3>\n\n\n<p>SQLFlow Cloud propose une version gratuite\u00a0; la version Premium co\u00fbte 49,99\u00a0\u00a3\/mois. SQLFlow On-Premise co\u00fbte 500\u00a0\u00a3\/mois ou 4\u00a0800\u00a0\u00a3 (paiement unique) par type de base de donn\u00e9es s\u00e9lectionn\u00e9, et peut \u00eatre install\u00e9 sur deux serveurs. Plus d&#039;informations sont disponibles sur le site web. <a href=\"https:\/\/www.gudusoft.com\/fr\/tarification\/\">page de tarification<\/a>.<\/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\">Cartographiez d\u00e8s maintenant vos cha\u00eenes ClickHouse MV<\/h2>\n\n\n<p>Collez vos instructions CREATE MATERIALIZED VIEW dans le visualiseur gratuit et visualisez la lign\u00e9e compl\u00e8te Kafka-\u00e0-rollup, ou contactez-nous pour analyser l&#039;ensemble de votre infrastructure.<\/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=clickhouse-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Essayez SQLFlow gratuitement<\/a><\/div>\n\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\\\/clickhouse-data-lineage\\\/\",\n            \"description\": \"Automated SQL data lineage tool with a dedicated ClickHouse dialect parser: traces column-level lineage through chained materialized views, from Kafka engine tables to AggregatingMergeTree rollups.\",\n            \"featureList\": \"ClickHouse dialect parser, column-level lineage, direct vs indirect lineage, materialized view chain resolution, JSON\\\/CSV\\\/PNG export, REST API, DataHub\\\/Purview\\\/OpenMetadata export\",\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\": \"Can SQLFlow trace lineage through chained ClickHouse materialized views?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. Each materialized view's SELECT is parsed and its target table is linked into the graph, so a Kafka engine table feeding an MV, feeding a MergeTree table, feeding another MV into an AggregatingMergeTree resolves as one continuous column-level path.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does SQLFlow understand ClickHouse-specific SQL syntax?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. ClickHouse is one of SQLFlow's 39 dialect-specific parsers. It is a dedicated grammar, not a generic ANSI parser, so ClickHouse constructs such as engine clauses and aggregate function state columns are parsed rather than skipped.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does SQLFlow need access to my ClickHouse data?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"No. SQLFlow performs static analysis of SQL code and, optionally, schema metadata pulled over JDBC. It never reads rows from your tables, and the On-Premise edition keeps even the SQL text inside your network.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What does indirect lineage mean for a ClickHouse rollup?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"A column used in a materialized view's WHERE filter or GROUP BY never appears in the rollup's output, yet it determines which rows are aggregated. SQLFlow records these as indirect lineage edges, separate from direct dataflow, and lets you toggle each layer in the diagram.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How much does SQLFlow cost for ClickHouse lineage?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"SQLFlow Cloud has a free tier; premium is $49.99\\\/month. SQLFlow On-Premise is $500\\\/month or $4,800 one-time per selected database type, installable on two servers.\"\n                    }\n                }\n            ]\n        }\n    ]\n}<\/script>","protected":false},"excerpt":{"rendered":"<p>ClickHouse data lineage is the map of how columns flow through your ClickHouse pipeline: which Kafka engine tables, MergeTree tables, and materialized view SELECTs feed each downstream column, and which functions and aggregate states transform the data along the way. Because ClickHouse materialized views are defined entirely in SQL, accurate lineage comes from parsing that SQL. Gudu SQLFlow does this with a dedicated ClickHouse dialect parser and returns interactive, column-level lineage diagrams. Try it now: paste your CREATE MATERIALIZED VIEW statements into the free SQLFlow visualizer, select the ClickHouse dialect, and get a column-level lineage diagram of your MV chain\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\/6765"}],"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=6765"}],"version-history":[{"count":0,"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/pages\/6765\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/fr\/wp-json\/wp\/v2\/media?parent=6765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}