Traçabilité des données Redshift : Traçabilité automatisée des colonnes à partir des journaux de requêtes

Traçabilité des données Redshift Il s'agit de la cartographie au niveau des colonnes de la façon dont les données circulent dans votre cluster Amazon Redshift : quelles tables et colonnes sources alimentent chaque table, vue et rapport cible, et quelles transformations sont effectuées en cours de route. Redshift ne conserve pas une telle cartographie lui-même, mais il enregistre chaque instruction SQL exécutée, et dans Redshift, chaque transformation est exprimée en SQL. En analysant ces journaux, vous pouvez reconstituer automatiquement la lignée complète. C'est précisément ce que Gudu SQLFlow Il ingère nativement les journaux de requêtes Redshift et transforme le SQL exécuté en diagrammes de lignage interactifs au niveau des colonnes.

Essayez en 30 secondes : collez n'importe quelle requête Redshift dans le Visualiseur de lignage SQLFlow gratuitSélectionnez le dialecte Redshift pour visualiser immédiatement le diagramme de lignage au niveau des colonnes. L'édition Cloud propose une version gratuite.

Pourquoi Redshift n'a pas de vue de lignée intégrée

La console et les vues système de Redshift sont conçues pour l'exploitation du cluster, et non pour la compréhension des flux de données. Vous pouvez examiner les performances des requêtes, le comportement des files d'attente et les statistiques des tables, mais Redshift ne permet pas de relier une colonne de sortie aux colonnes sources qui l'ont produite. Même le suivi des dépendances de catalogue de type PostgreSQL, hérité par Redshift, est inopérant pour l'une de ses fonctionnalités propres : les vues à liaison tardive (créées SANS LIAISON DE SCHÉMA) n'enregistrent délibérément aucune dépendance à l'égard de leurs tables sous-jacentes.

Ce que Redshift conserve, ce sont les données brutes : les tables système telles que… STL_QUERYTEXT et HISTORIQUE DES REQUÊTES SYSTÈME Le texte des instructions exécutées est stocké et la journalisation d'audit peut archiver chaque requête sur S3 pour une conservation à long terme. L'historique SQL est complet. Ce qui manque, c'est la couche d'analyse qui lit des milliers de ces instructions et répond à la question : « Où… ? » fact_orders.net_revenu « D’où viennent-ils réellement ? » Cette couche d’analyse est un outil de traçabilité SQL.

Comment obtenir la traçabilité des données Redshift à partir des journaux de requêtes ?

L'analyse de la lignée basée sur les journaux de requêtes présente un avantage décisif par rapport à l'analyse des seuls référentiels sources : elle capture l'historique des opérations réellement exécutées. ETL planifiés, remplissages ad hoc, instructions émises par les outils de BI et les orchestrateurs, correctifs ponctuels exécutés depuis un client SQL : tout cela est consigné dans l'historique des requêtes, qu'il soit ou non versionné. Le flux de travail avec SQLFlow :

  1. Collecter les requêtes SQL exécutées. Extrayez le texte des instructions des tables système de Redshift ou des journaux d'audit que Redshift écrit sur S3. L'ingestion des journaux de requêtes Redshift est une entrée SQLFlow native, au même titre que le SQL collé, les fichiers téléchargés et les métadonnées en direct via JDBC.
  2. Analyser avec un analyseur spécifique à Redshift. SQLFlow analyse chaque instruction avec un analyseur syntaxique dédié au dialecte Redshift (l'un des 39 analyseurs spécifiques à chaque dialecte, et non une grammaire ANSI générique) et résout chaque référence de colonne via des CTE, des sous-requêtes, des vues, etc. SÉLECTIONNER * expansion.
  3. Fusionnez et explorez. L'historique de chaque déclaration est fusionné en un seul graphique interactif que vous pouvez explorer, remonter ou descendre à partir de n'importe quelle colonne, et exporter aux formats JSON, CSV ou PNG, ou interroger. API REST SQLFlow.

Comme il s'agit d'une analyse statique du texte SQL, SQLFlow ne lit jamais les lignes de vos tables. Il a uniquement besoin du code SQL et, éventuellement, des métadonnées de schéma pour résoudre les références ambiguës.

Exemple concret : INSERT … SELECT avec une fonction de fenêtre

Voici le type d'instruction qui remplit un véritable journal de requêtes Redshift : une agrégation avec une fonction de fenêtre chargeant une table de reporting :

INSERT INTO analytics.customer_monthly_rank (customer_id, order_month, monthly_revenue, revenue_rank) SELECT o.customer_id, DATE_TRUNC('month', o.order_date) AS order_month, SUM(o.amount) AS monthly_revenue, RANK() OVER ( PARTITION BY DATE_TRUNC('month', o.order_date) ORDER BY SUM(o.amount) DESC ) AS revenue_rank FROM sales.orders o WHERE o.status = 'complete' GROUP BY o.customer_id, DATE_TRUNC('month', o.order_date);

À partir de cette seule instruction, SQLFlow extrait la lignée au niveau des colonnes dans deux catégories distinctes :

Colonne cibleSources directesSources indirectes (d'impact)
identifiant_clientcommandes.identifiant_clientstatut des commandes (OÙ)
mois de commandecommandes.date_de_commande via DATE_TRUNCstatut des commandes
revenu_mensuelcommandes.montant via SOMMEstatut des commandes, commandes.identifiant_client, commandes.date_de_commande (REGROUPER PAR)
classement des revenuscommandes.montant via SOMME alors RANG() SURcommandes.date_de_commande (PARTITION PAR), statut des commandes

Notez la deuxième catégorie. statut des commandes Cette donnée n'apparaît jamais dans le résultat, mais modifier son remplissage modifie chaque nombre de la table cible. SQLFlow modélise ce comportement. lignée indirecte Les colonnes agissant via les clauses WHERE, GROUP BY, JOIN et les partitions de fenêtres constituent un type de relation distinct et activable. La plupart des outils de traçabilité ne font pas cette distinction, or c'est précisément la différence entre « quels rapports lisent cette colonne » et « quels rapports sont affectés par cette colonne ».

Les constructions spécifiques à Redshift restent du SQL.

Vues à liaison tardive

Les vues à liaison tardive constituent le modèle standard de Redshift pour découpler les vues des tables sous-jacentes et sont, par conception, invisibles pour les requêtes de dépendance basées sur le catalogue. Pour un analyseur SQL, cependant, une vue à liaison tardive est simplement une définition de vue : SQLFlow analyse la requête SELECT de la vue et relie ses colonnes de sortie à leurs sources comme pour toute autre vue, assurant ainsi une traçabilité directe. SANS LIAISON DE SCHÉMA.

DISTKEY, SORTKEY et DISTSTYLE

Les clés de distribution et de tri déterminent les performances, et non le flux de données. Une table déclarée avec CLÉ DISTRIBUTION(identifiant_client) CLÉ DE TRI(date_commande) Elle conserve la même lignée que n'importe quelle autre table ; SQLFlow analyse le DDL Redshift, enregistre la table et ses colonnes, et les clauses de réglage physique sont transmises sans affecter le graphe. Votre lignée reste correcte, qu'une table soit DISTSTYLE TOUT, MÊME, ou CLÉ.

Redshift n'est pas PostgreSQL.

Redshift est dérivé de PostgreSQL, mais s'en est considérablement éloigné au niveau de sa syntaxe et de son comportement. C'est pourquoi SQLFlow intègre un analyseur syntaxique Redshift dédié plutôt que de réutiliser son analyseur syntaxique existant. Lignée de PostgreSQL parser — each of the 39 supported dialects gets its own grammar, validated against a corpus of roughly 13,600 per-dialect SQL test fixtures built up over two decades of commercial parser development.

Méthodes d'intégration de SQL Redshift dans SQLFlow

SaisirCe que cela vous apporte
Journaux de requêtes RedshiftTraçabilité de chaque déclaration exécutée — le tableau complet et fiable
Métadonnées en direct via JDBCDéfinitions DDL et de vues extraites directement du cluster
Fichiers SQL téléchargésScripts ETL et référentiels analysés par lots
SQL colléTraçabilité instantanée d'une seule instruction dans le navigateur
Manifeste DBTTraçabilité au niveau des colonnes des modèles dbt construits dans Redshift

À l'échelle de l'entreprise, SQLFlow effectue des analyses par lots sur des ensembles de plus de 100 bases de données et plus d'un million de colonnes, exécute des analyses incrémentales, maintient un référentiel de lignage persistant et exporte vers DataHub, Microsoft Purview et OpenMetadata — de sorte que le lignage Redshift puisse alimenter le catalogue que vous utilisez déjà au lieu de vivre dans un autre silo.

Comment cette approche se compare-t-elle aux autres ?

Les analyseurs syntaxiques open source tels que SQL Lineage et sqlglot Elles sont performantes pour extraire la lignée d'instructions individuelles bien formées, et peuvent suffire pour quelques requêtes simples. Leur principal défaut apparaît cependant sur un journal Redshift en production : des milliers d'instructions, une syntaxe spécifique à Redshift, des vues imbriquées les unes dans les autres… SÉLECTIONNER * qui nécessite des métadonnées de schéma pour s'étendre et une traçabilité indirecte via des filtres et des partitions de fenêtres. Les plateformes privilégiant le catalogue excellent dans l'organisation et la gestion des métadonnées à travers de nombreux systèmes ; pour une analyse SQL approfondie, elles requièrent généralement un moteur de traçabilité spécialisé sous-jacent – c'est pourquoi SQLFlow propose des adaptateurs d'exportation pour DataHub, Purview et OpenMetadata au lieu de les concurrencer.

Si vous utilisez Redshift en parallèle d'autres entrepôts de données, le même moteur les gère tous de la même manière — voir Traçabilité des données Snowflake à partir de l'historique des requêtes, qui fonctionne de manière très similaire à l'ingestion basée sur les journaux de Redshift. Et pour les environnements réglementés, SQLFlow sur site S'exécute dans Docker ou Kubernetes au sein de votre réseau, votre texte SQL ne quitte donc jamais votre infrastructure.

Foire aux questions

Est-ce que SQLFlow lit les données de mon cluster Redshift ?

Non. SQLFlow effectue une analyse statique du code SQL et peut lire les métadonnées du schéma (définitions des tables et des colonnes). Il ne lit jamais les lignes des tables. Avec l'édition sur site, même le texte SQL reste au sein de votre réseau.

D'où provient le SQL de Redshift ?

L'historique des requêtes Redshift, les journaux d'audit archivés sur S3, vos référentiels de scripts ETL ou les définitions DDL et de vues récupérées en direct via JDBC permettent de consulter les instructions exécutées. L'ingestion des journaux de requêtes Redshift étant une entrée SQLFlow native, la traçabilité reflète fidèlement les opérations réellement exécutées sur le cluster.

Les vues à liaison tardive posent-elles problème pour la traçabilité ?

Elles rendent impossible le suivi des dépendances basé sur un catalogue, car Redshift n'enregistre aucune dépendance les concernant, et ce, intentionnellement. Elles ne posent aucun problème pour la traçabilité basée sur l'analyse syntaxique : SQLFlow analyse directement la définition SQL de la vue et relie ses colonnes à leurs sources comme pour n'importe quelle autre vue.

SQLFlow indique-t-il quelles colonnes n'influencent les résultats que par le biais des filtres ?

Oui. SQLFlow distingue la lignée directe (les données qui alimentent réellement une colonne de sortie) de la lignée indirecte (les colonnes agissant via les clauses WHERE, JOIN, GROUP BY et de partitionnement de fenêtre), et vous permet d'activer ou de désactiver chacune indépendamment dans le diagramme.

Combien coûte SQLFlow ?

SQLFlow Cloud est gratuit au départ ; les comptes premium coûtent 49,99 £/mois. SQLFlow On-Premise coûte 500 £/mois ou 4 800 £ (paiement unique) par type de base de données sélectionné, installable sur deux serveurs, chaque type de base de données supplémentaire coûtant 100 £/mois ou 1 000 £ (paiement unique).

Découvrez votre lignée Redshift dès maintenant

Collez une requête Redshift dans le visualiseur gratuit, ou contactez-nous pour analyser l'intégralité de votre historique de requêtes.