Great Expectations est une bibliothèque open-source pour la gestion et la validation de la qualité des données, conçue pour aider les équipes d'ingénierie des données et de science des données à instaurer la confiance dans leurs pipelines de données. Le framework utilise une approche déclarative, permettant aux utilisateurs de définir des « expectations » - des assertions lisibles par l'humain sur les propriétés d'un ensemble de données - puis de valider les données par rapport à ces règles. Il s'intègre aux principales plateformes de données et aux flux de travail, offrant une couche unifiée pour tester les données à différentes étapes de l'ingestion, de la transformation et du stockage. Initialement publié en 2018, Great Expectations est devenu une pierre angulaire de l'observabilité moderne des données et est maintenu par une communauté dédiée et la société Great Expectations Labs, Inc.
Le framework est construit autour de plusieurs concepts clés : les Expectations, les Validation Results, les Data Docs et les Checkpoints. Une Expectation est une assertion vérifiable sur les données, telle que « les valeurs de colonne sont uniques » ou « le taux de nullité est inférieur à 5 % ». Celles-ci sont implémentées en tant que classes Python et peuvent être combinées en Expectation Suites qui profilent collectivement un ensemble de données. Les Validation Results capturent le résultat de l'exécution d'une suite sur un lot spécifique de données, y compris le statut de réussite ou d'échec par expectation et des statistiques détaillées. Les Data Docs sont des rapports lisibles par l'humain générés automatiquement qui rendent ces résultats en pages HTML, rendant les problèmes de qualité accessibles aux parties prenantes non techniques. Les Checkpoints relient tout cela en orchestrant le processus de validation, en déclenchant éventuellement des actions telles que des notifications ou un nettoyage des données en cas d'échec.
Architecture et intégrations
Great Expectations est conçu pour être indépendant de la base de données et fonctionne avec une large gamme de backends de données. Un support natif existe pour les bases de données SQL comme PostgreSQL, MySQL et Snowflake, ainsi que pour les entrepôts de données tels que Redshift et BigQuery. Le framework se connecte également à des systèmes basés sur des fichiers comme les Pandas DataFrames, les Spark DataFrames et les fichiers Parquet. Cela est réalisé grâce à une architecture de moteur d'exécution enfichable, avec des backends pour Pandas, Spark et SQLAlchemy. La bibliothèque fournit une API Python pour une utilisation programmatique et une CLI pour une configuration et une mise en place rapides, tandis que les versions plus récentes ont introduit un objet Data Context qui gère la configuration du projet et stocke les métadonnées.
Une caractéristique clé est sa capacité à générer automatiquement des expectations grâce à un processus appelé profilage. En exécutant le profileur sur un échantillon de données, le framework peut suggérer des expectations raisonnables basées sur les statistiques observées, telles que les types de colonnes, les distributions de valeurs et les comptes de valeurs manquantes. Cela réduit considérablement l'effort manuel lors de l'intégration de nouveaux ensembles de données. De plus, le framework prend en charge les expectations personnalisées, permettant aux équipes d'écrire leurs propres validateurs pour des règles spécifiques au domaine, et il s'intègre aux planificateurs de flux de travail comme Airflow, Prefect et Dagster via des opérateurs dédiés.
Flux de travail et modèles d'utilisation
Dans un déploiement typique, un ingénieur de données instancie un Data Context, qui définit le magasin d'expectations du projet, le magasin de résultats de validation et le site de data docs. Ils créent ensuite une Data Source qui pointe vers une table de base de données ou un fichier spécifique. Les expectations sont soit écrites manuellement, soit générées via le profilage. Un lot de données est demandé et passé à travers un Checkpoint, qui exécute la validation et stocke les résultats. Lorsque la validation échoue, le framework peut déclencher des alertes via Slack, e-mail ou d'autres canaux, permettant une réponse rapide aux régressions de qualité des données. Les Data Docs servent de documentation vivante du comportement attendu des données, se mettant à jour automatiquement après chaque exécution de vérification.
Le framework permet également une approche de test similaire aux tests unitaires dans le développement logiciel. Au lieu d'écrire du code pour vérifier les données, les ingénieurs déclarent des hypothèses à l'avance. Ce passage de la validation procédurale aux assertions déclaratives a été salué pour sa maintenabilité et sa clarté. Les équipes peuvent versionner les suites d'expectations et les utiliser dans les pipelines CI/CD pour empêcher les mauvaises données d'atteindre la production. La connexion de la bibliothèque à l'écosystème Python plus large signifie qu'elle peut être utilisée aux côtés d'outils comme les notebooks Jupyter pour l'analyse exploratoire et les pipelines d'apprentissage automatique, où la qualité des données est critique pour la performance des modèles.
Communauté et écosystème
Le projet est hébergé sur GitHub sous la licence Apache-2.0, garantissant qu'il reste gratuit pour un usage commercial. Les mainteneurs principaux sont rejoints par une communauté mondiale de contributeurs qui développent de nouvelles expectations, améliorent le support des backends et rédigent la documentation. En 2024, le framework a été téléchargé plus de 30 millions de fois et est utilisé par des milliers d'organisations, y compris des entreprises technologiques bien connues dans le domaine de l'intelligence artificielle et de l'infrastructure de données. La société derrière le projet, fondée par James Campbell et Alex Gessner, offre un support commercial et une version entreprise avec des fonctionnalités supplémentaires comme l'écriture collaborative et le contrôle d'accès basé sur les rôles.
Applications dans les données et l'IA
L'importance croissante de la qualité des données dans l'apprentissage automatique a positionné Great Expectations comme un outil critique dans les piles de données modernes. Dans les projets de deep learning et de IA générative, où les modèles sont entraînés sur de grands ensembles de données, même des anomalies mineures peuvent conduire à des résultats biaisés ou à une performance dégradée. Le framework permet aux équipes de science des données de valider les ensembles de données d'entraînement et d'évaluation, garantissant la cohérence et l'intégrité avant de les alimenter dans les modèles pour l'entraînement de réseaux de neurones. Il sert également de couche de surveillance pour les systèmes d'inférence en production, vérifiant que les vecteurs de caractéristiques entrants adhèrent aux distributions attendues. Cette approche proactive aide à prévenir les échecs silencieux dans les applications déployées, ce qui est particulièrement pertinent dans les secteurs réglementés comme la finance et la santé.
De plus, Great Expectations chevauche les pratiques d'observabilité des données, complétant les outils qui suivent la fraîcheur, le volume et les changements de schéma. En fournissant un moyen standardisé de définir des contrats de données entre producteurs et consommateurs, il facilite la collaboration entre les équipes d'ingénierie des données et d'analyse. La capacité du framework à s'intégrer aux plateformes cloud comme Amazon Web Services, Azure et Google Cloud en fait une solution portable pour les organisations avec des architectures multi-cloud ou hybrides. Alors que les volumes de données augmentent et que les pipelines deviennent plus complexes, des frameworks comme celui-ci sont de plus en plus considérés comme une infrastructure essentielle pour des opérations de données fiables.