Skip to content
Learni
View all tutorials
Data Engineering

Comment garantir la qualité des données avec Great Expectations en 2026

Introduction

La qualité des données est devenue un enjeu stratégique pour toute organisation data-driven. Avec l'explosion des sources de données et l'utilisation croissante de pipelines automatisés, les erreurs silencieuses peuvent coûter cher. Great Expectations permet de définir des contrats de données explicites et de les valider automatiquement. Ce tutoriel expert vous guide à travers une implémentation complète et production-ready, incluant checkpoints, actions et intégration CI/CD. Vous apprendrez à passer d'une validation manuelle à un système de gouvernance fiable et maintenable.

Prérequis

  • Python 3.10+
  • Connaissances avancées de pandas et SQL
  • Accès à une base de données PostgreSQL ou Snowflake
  • Docker (optionnel pour l'environnement de test)

Initialisation du projet GE

terminal
python -m venv venv
source venv/bin/activate
pip install great-expectations==0.18.12 pandas sqlalchemy psycopg2-binary
mkdir data_quality_tutorial && cd data_quality_tutorial
great_expectations init

Initialisez un projet Great Expectations avec la version 0.18.12 pour garantir la compatibilité. La commande init crée la structure de répertoires attendue incluant expectations, checkpoints et plugins.

Configuration de la datasource

great_expectations/great_expectations.yml
datasources:
  postgres_source:
    class_name: Datasource
    execution_engine:
      class_name: SqlAlchemyExecutionEngine
      connection_string: postgresql://user:password@localhost:5432/analytics
    data_connectors:
      default_runtime_data_connector:
        class_name: RuntimeDataConnector
        batch_identifiers:
          - batch_id

Déclarez votre source de données PostgreSQL dans le fichier de configuration principal. Utilisez RuntimeDataConnector pour les validations dynamiques en production.

Création de la suite d'expectations

create_expectation_suite.py
import great_expectations as gx
context = gx.get_context()
suite = context.add_expectation_suite(expectation_suite_name="raw_sales_suite")
batch_request = {
    "datasource_name": "postgres_source",
    "data_connector_name": "default_runtime_data_connector",
    "data_asset_name": "sales"
}
validator = context.get_validator(batch_request=batch_request, expectation_suite_name="raw_sales_suite")
validator.expect_column_to_exist("order_id")
validator.expect_column_values_to_not_be_null("order_id")
validator.expect_column_values_to_be_unique("order_id")
validator.expect_column_values_to_be_between("amount", min_value=0)
validator.save_expectation_suite(discard_failed_expectations=False)

Créez une suite d'expectations métier avec des règles strictes sur les colonnes critiques. Chaque expectation est persistée pour réutilisation dans les pipelines.

Création du checkpoint avancé

create_checkpoint.py
import great_expectations as gx
context = gx.get_context()
checkpoint = context.add_checkpoint(
    name="sales_quality_checkpoint",
    config={
        "class_name": "SimpleCheckpoint",
        "expectation_suite_name": "raw_sales_suite",
        "action_list": [
            {"name": "store_validation_result", "action": {"class_name": "StoreValidationResultAction"}},
            {"name": "update_data_docs", "action": {"class_name": "UpdateDataDocsAction"}},
            {"name": "notify_slack", "action": {"class_name": "SlackNotificationAction", "slack_webhook": "${SLACK_WEBHOOK}"}},
        ],
    },
)
context.save_checkpoint(checkpoint)

Configurez un checkpoint avec actions multiples incluant notification Slack. Cela permet une réaction immédiate en cas d'échec de validation.

Exécution de la validation

run_validation.py
import great_expectations as gx
from datetime import datetime
context = gx.get_context()
result = context.run_checkpoint(
    checkpoint_name="sales_quality_checkpoint",
    batch_request={
        "datasource_name": "postgres_source",
        "data_connector_name": "default_runtime_data_connector",
        "data_asset_name": "sales",
        "runtime_parameters": {"query": "SELECT * FROM raw.sales WHERE date = CURRENT_DATE"}
    },
    run_name=f"daily_validation_{datetime.now().strftime('%Y%m%d')}"
)
print(result.success)

Exécutez la validation avec une requête paramétrée pour cibler les données du jour. Le résultat contient le statut global et le détail par expectation.

Bonnes pratiques

  • Versionnez vos suites d'expectations dans Git comme du code source
  • Utilisez des expectations personnalisées pour les règles métier spécifiques
  • Configurez des seuils de tolérance plutôt que des validations bloquantes au début
  • Intégrez les validations dans vos pipelines Airflow ou dbt
  • Documentez chaque expectation avec un contexte métier clair

Erreurs courantes à éviter

  • Oublier de gérer les batchs volumineux qui font planter les validations
  • Ne pas configurer d'actions de notification en production
  • Utiliser des noms de suites non descriptifs
  • Ignorer les warnings de dépréciation lors des mises à jour de Great Expectations

Pour aller plus loin

Approfondissez vos compétences avec notre formation complète sur la gouvernance des données et les tests automatisés. Découvrez nos formations Learni.

Comment garantir la qualité des données avec Great Expectations en 2026 | Learni