Traçabilité des données DuckDB Il s'agit de la carte au niveau des colonnes de la façon dont les données circulent dans votre requête SQL DuckDB : quels fichiers Parquet et quelles tables sources alimentent chaque table dérivée, et par quels moyens de jointure, de conversion, de filtrage et d'agrégation. Gudu SQLFlow il construit automatiquement cette carte : il analyse vos scripts DuckDB avec un analyseur de dialecte DuckDB dédié et génère un diagramme de lignage interactif, sans exécuter une seule requête ni toucher à vos données.
Essayez-le maintenant : collez n'importe quelle requête DuckDB dans le Visualiseur de lignées SQL en ligne gratuitSélectionnez le dialecte DuckDB et obtenez un diagramme de traçabilité au niveau des colonnes en quelques secondes. Une version gratuite est disponible pour un usage individuel.
Pourquoi les pipelines DuckDB méritent une véritable traçabilité
DuckDB est discrètement devenu une infrastructure de données de premier plan. Il gère la couche de transformation dans dbt-duckdb Ces projets alimentent des analyses locales qui sont ensuite transférées vers l'entrepôt de données, sont intégrés aux applications et aux notebooks, et servent de plus en plus de moteur de calcul pour les lacs de données Parquet. Le SQL de ces pipelines prend les mêmes types de décisions que le SQL de l'entrepôt de données : il calcule le chiffre d'affaires, filtre les clients et construit les tables consultées par le tableau de bord.
Pourtant, les projets DuckDB ne bénéficient généralement pas de la même rigueur en matière de traçabilité qu'un entrepôt de données. Il y a une raison structurelle à cela : la plupart des outils de traçabilité supposent un serveur de base de données. La traçabilité basée sur les journaux d'exécution collecte les journaux de requêtes depuis un moteur central ; les plateformes axées sur le catalogue explorent les métadonnées d'un serveur. DuckDB est exécuté en interne : il n'y a souvent ni serveur, ni historique de requêtes partagé, ni agent de catalogue à installer. La logique de transformation réside dans… .sql fichiers, modèles dbt et scripts enregistrés dans un dépôt.
L'analyse statique SQL s'impose donc comme la méthode naturelle, et souvent la seule, pour établir la traçabilité des données DuckDB. SQLFlow analyse directement le texte SQL, garantissant ainsi un fonctionnement identique, que la requête soit exécutée sur un ordinateur portable, dans le cadre d'une tâche d'intégration continue ou au sein d'un processus applicatif.
Comment SQLFlow construit la traçabilité des données DuckDB
SQLFlow est construit sur le Analyseur SQL général (GSP)DuckDB est un compilateur SQL commercial, une interface frontale développée depuis le milieu des années 2000 et validée à l'aide d'environ 13 600 jeux de tests SQL par dialecte. DuckDB est l'un des 39 bases de données avec un analyseur syntaxique spécifique au dialecte — et non une grammaire ANSI générique à laquelle on aurait greffé la syntaxe de DuckDB. Le processus :
- Ingérer. Collez du code SQL DuckDB, téléchargez vos fichiers de script ou importez un manifeste dbt depuis un
dbt-duckdbprojet. - Analyser et résoudre. GSP construit un modèle sémantique complet de chaque instruction, résolvant chaque référence de colonne via des CTE, des sous-requêtes, des vues, et
SÉLECTIONNER *expansion. - Extraire le flux de données. L'analyseur de flux de données enregistre, pour chaque colonne de sortie, exactement quelles colonnes sources l'alimentent et par quelles fonctions, conversions, jointures et opérateurs ensemblistes.
- Visualisez et exportez. Explorez le diagramme interactif en profondeur, suivez n'importe quelle colonne en amont ou en aval, et exportez le graphique au format JSON, CSV ou PNG, ou récupérez-le via l'API REST.
Exemple : lignée via read_parquet() et CTAS
Le modèle signature de DuckDB est CRÉER UNE TABLE COMME SÉLECTION Lecture directe des fichiers — sans chargement intermédiaire, les fichiers Parquet sont la source. Une configuration de reporting typique :
CRÉER TABLE reporting.daily_revenue AS SELECT CAST(o.order_ts AS DATE) AS order_date, c.region AS region, SUM(o.amount) AS revenue, COUNT(DISTINCT o.customer_id) AS buyers FROM read_parquet('lake/orders/*.parquet') AS o JOIN dim_customers AS c ON o.customer_id = c.customer_id WHERE o.status = 'completed' GROUP BY 1, 2;
L'analyseur DuckDB de SQLFlow comprend lire_parquet() En tant que source de table, le chemin Parquet apparaît comme un nœud réel dans le graphe de lignage et non comme un appel de fonction non résolu. À partir de cette seule instruction, il extrait :
revenu_quotidien.revenuest alimenté paro.montantde la source Parquet, à traversSOMME().revenu_quotidien.date_de_commandeest alimenté paro.order_ts, par l'intermédiaire d'unCASTINGàDATE.revenu_quotidien.régionvient directement dedim_customers.région.o.statut,o.customer_id, etc.customer_idn'apparaissent jamais dans le résultat final, mais ils le façonnent, c'est pourquoi SQLFlow les enregistre comme lignée indirecte (plus de détails ci-dessous).
Enchaînez cinquante de ces instructions dans un projet dbt ou un script nocturne et le graphique se complexifie : SQLFlow assemble chaque table intermédiaire afin que vous puissiez retracer un numéro de tableau de bord jusqu’à la colonne Parquet exacte dont il était issu.
Lignée directe vs lignée indirecte
Dans l'exemple ci-dessus, o.statut n'apparaît jamais dans revenu_quotidien, mais changeant la façon dont statut Le fait que cette variable soit renseignée modifierait silencieusement chaque chiffre d'affaires. SQLFlow modélise cela comme suit : lignée indirecte (d'impact): colonnes utilisées dans OÙ, REJOINDRE, et GROUPER PAR Les clauses et les agrégats internes forment un type de relation distinct, activable séparément, parallèlement au flux de données direct. La plupart des outils concurrents ne font pas cette distinction, ce qui signifie que leur analyse d'impact passe à côté des dépendances à l'origine de bogues de données silencieux.
Pour un pipeline DuckDB, cela est doublement important : les sources basées sur des fichiers n’ont ni clés étrangères ni contraintes pour vous avertir, donc le SQL lui-même est le seul endroit où ces dépendances sont enregistrées.
Lignée des projets dbt-duckdb
dbt-duckdb est l'une des manières les plus courantes dont DuckDB est exécuté en production, et le DAG de dbt s'arrête au niveau du modèle : il vous indique revenu_quotidien dépend de stg_orders, et non les colonnes qui contiennent la dépendance. SQLFlow importe votre manifeste dbt et produit niveau de colonne traçabilité à travers les modèles compilés, vous pouvez donc répondre à la question « quels marchés font ? » stg_orders.montant « Vraiment nourrir ? » avant de le modifier.
Cette même analyse s'avère payante au moment de la migration. Les équipes réalisent fréquemment des prototypes sur DuckDB, puis transfèrent leurs modèles vers une autre plateforme. ClickHouse, PostgreSQLou un entrepôt de données dans le cloud. Comme SQLFlow analyse tous ces éléments à l'aide de grammaires spécifiques à chaque dialecte, vous pouvez cartographier le véritable graphe de dépendances avant la migration et vérifier qu'aucun élément n'a été orphelin après, en utilisant un seul outil et un seul modèle de traçabilité des deux côtés.
Quelles sont les options pour la traçabilité de DuckDB ?
| Approche | Bon en | L'écart pour DuckDB |
|---|---|---|
| Documentation manuelle | Saisie des intentions et du contexte commercial | Périssable dès le lendemain de sa rédaction ; aucun détail de colonne |
Analyseurs syntaxiques open source (SQL Lineage, sqlglot) | Analyse des requêtes individuelles dans un flux de travail Python ; gratuit | Vous assemblez vous-même la résolution, l'expansion des étoiles, la jonction des déclarations croisées et la visualisation ; la lignée indirecte est de votre responsabilité. |
| lignée basée sur les journaux d'exécution | Observer ce qui s'est réellement exécuté sur un serveur | Suppose un moteur central générant des journaux ; une instance DuckDB exécutée en interne sur un ordinateur portable ou au sein d’une application n’a rien à collecter. |
| Plateformes axées sur le catalogue | Flux de travail de gouvernance, propriété, glossaires pour l'ensemble de la pile | La profondeur de la lignée dépend de leur analyse SQL par dialecte ; les scripts DuckDB intégrés sont rarement des sources de premier ordre |
| Gudu SQLFlow | Analyse statique, au niveau des colonnes, du texte SQL lui-même, prenant en compte le dialecte, avec traçabilité directe et indirecte | Version commerciale pour une utilisation à l'échelle d'une équipe (niveau gratuit pour les requêtes individuelles) |
Ces options ne sont pas incompatibles. Si vous utilisez déjà un catalogue, les déploiements d'entreprise de SQLFlow exportent la traçabilité vers DataHub, Microsoft Purview et OpenMetadataIl devient ainsi le moteur d'analyse syntaxique qui sous-tend le catalogue que vous conservez.
Déploiement et confidentialité
SQLFlow effectue uniquement une analyse statique du code SQL ; il ne lit jamais les lignes de vos tables ni de vos fichiers Parquet. Pour les équipes dont les scripts DuckDB intègrent une logique propriétaire, SQLFlow sur site SQLFlow Cloud s'exécute avec Docker ou Kubernetes au sein de votre réseau (installations isolées prises en charge), garantissant ainsi que même le code SQL ne quitte jamais votre infrastructure. SQLFlow Cloud est gratuit avec une version Premium à 49,99 £/mois. La version On-Premise coûte 500 £/mois ou 4 800 £ (paiement unique) par type de base de données sélectionné et peut être installée sur deux serveurs. Les deux versions sont également scriptables via une interface de ligne de commande (CLI) sans interface graphique et une API REST, ce qui correspond à la culture d'automatisation poussée et d'intégration continue (CI) de DuckDB.
À l'autre extrémité de l'échelle, le même moteur analyse par lots des ensembles de plus de 100 bases de données et plus d'un million de colonnes avec une analyse incrémentale et un référentiel de lignage persistant, de sorte que la partie DuckDB de votre pile et l'entrepôt de données peuvent vivre dans un seul graphe de lignage.
Foire aux questions
SQLFlow peut-il retracer la lignée via read_parquet() et les sources de fichiers ?
Oui. L'analyseur syntaxique de dialecte DuckDB traite lire_parquet() en tant que source de table, les chemins de fichiers apparaissent donc comme des nœuds sources dans le graphe de lignage et les colonnes lues à partir de Parquet sont suivies dans les tables en aval comme n'importe quelle autre colonne.
Dois-je exécuter mes requêtes DuckDB pour obtenir la lignée ?
Non. SQLFlow effectue une analyse statique : il analyse le texte SQL sans jamais l'exécuter. C'est ce qui le rend adapté à DuckDB (serveur interne), où il n'y a pas de journal de requêtes à collecter côté serveur.
SQLFlow prend-il en charge les projets dbt-duckdb ?
Oui. Importez le manifeste dbt et SQLFlow génère une traçabilité au niveau des colonnes pour l'ensemble de vos modèles — plus fine que le DAG au niveau du modèle propre à dbt.
DuckDB prend-il en charge un véritable analyseur syntaxique de dialecte ou du SQL ANSI générique ?
Un véritable analyseur syntaxique de dialecte. SQLFlow intègre des analyseurs syntaxiques spécifiques à chaque dialecte pour 39 bases de données, dont DuckDB, construits sur un moteur d'analyse validé par rapport à environ 13 600 jeux de tests SQL par dialecte.
Les données de traçabilité issues des scripts DuckDB peuvent-elles alimenter mon catalogue de données ?
Oui. Les déploiements en entreprise incluent des adaptateurs d'exportation pour DataHub, Microsoft Purview et OpenMetadata, ainsi que l'exportation JSON et CSV et une API REST pour les intégrations personnalisées.
Quel est le coût de SQLFlow pour la lignée DuckDB ?
SQLFlow Cloud propose une version gratuite ; la version Premium coûte 49,99 £/mois. La version sur site coûte 500 £/mois ou 4 800 £ (paiement unique) par type de base de données sélectionné. Voir tarification pour plus de détails.
Suivez votre pipeline DuckDB dès maintenant
Collez une requête DuckDB dans le visualiseur gratuit et visualisez sa lignée au niveau des colonnes, ou contactez-nous pour analyser un projet entier.