AccueilBlogTest technique Great Expectations : tester la qualite des donnees
Guide recrutement data

Test technique Great Expectations : tester la qualite des donnees

Great Expectations est le framework Python de reference pour tester la qualite des donnees. En entretien, on evalue la capacite a aller au-dela des tests dbt basiques.

Data Builder·Juin 2025·6 min de lecture·Data Engineer · Analytics Engineer
Sommaire
  1. Concepts GE
  2. Ecrire des expectations
  3. Checkpoints et validation
  4. Integration avec dbt
  5. Integration Airflow
  6. Data Docs
  7. Grille

1Concepts fondamentaux

Question discriminante

Quels sont les 3 composants principaux de Great Expectations ?

2Ecrire des expectations

Question discriminante

Quelles expectations utilisez-vous pour valider un dataset de transactions financieres ?

import great_expectations as gx context = gx.get_context() batch = context.sources.pandas_default.read_csv('transactions.csv') # Expectations sur une colonne batch.expect_column_values_to_not_be_null('transaction_id') batch.expect_column_values_to_be_unique('transaction_id') batch.expect_column_values_to_be_between('amount', min_value=0, max_value=1_000_000) batch.expect_column_values_to_be_in_set('status', ['completed', 'pending', 'failed']) batch.expect_column_values_to_match_regex('email', r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$') # Expectations sur le dataset entier batch.expect_table_row_count_to_be_between(min_value=1000, max_value=10_000_000) batch.expect_table_columns_to_match_ordered_list( ['transaction_id', 'amount', 'status', 'created_at'] ) # Sauvegarde de la suite batch.save_expectation_suite('transactions_suite')

3Checkpoints : executer les validations

Question discriminante

Comment configurez-vous un checkpoint pour alerter quand les tests echouent ?

# Checkpoint avec action sur echec checkpoint = context.add_checkpoint( name='daily_transactions_check', validations=[{ 'batch_request': {'datasource_name': 'prod_db', 'data_asset_name': 'transactions'}, 'expectation_suite_name': 'transactions_suite' }], action_list=[ { 'name': 'store_validation_result', 'action': {'class_name': 'StoreValidationResultAction'} }, { 'name': 'update_data_docs', 'action': {'class_name': 'UpdateDataDocsAction'} }, { 'name': 'send_slack_notification', 'action': { 'class_name': 'SlackNotificationAction', 'slack_webhook': '{{ env_var("SLACK_WEBHOOK") }}', 'notify_on': 'failure' } } ] ) result = checkpoint.run() print(result['success'])

4Integration avec dbt

Question discriminante

Comment combinez-vous dbt tests et Great Expectations ?

5Integration Airflow

Question discriminante

Comment declencheriez-vous un checkpoint GE depuis un DAG Airflow ?

from great_expectations_provider.operators.great_expectations import GreatExpectationsOperator validate_data = GreatExpectationsOperator( task_id='validate_transactions', data_context_root_dir='/opt/airflow/great_expectations', checkpoint_name='daily_transactions_check', fail_task_on_validation_failure=True, # fait echouer le DAG si les tests echouent dag=dag ) extract >> transform >> validate_data >> load

6Data Docs : documentation vivante

7Grille par niveau

NiveauMaitriseSignal GONO-GO
ConfirmeExpectations basiques, checkpoints, integration dbtA ecrit une suite d expectations, configure un checkpoint avec alerteNe connait que les tests dbt basiques
SeniorIntegration Airflow, Data Docs, expectations statistiques avanceesA integre GE dans un pipeline Airflow, heberge les Data Docs sur GCSN a jamais configure d actions sur echec de validation

Vous recrutez un Data Engineer qualite ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.