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.
Quels sont les 3 composants principaux de Great Expectations ?
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')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'])Comment combinez-vous dbt tests et Great Expectations ?
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| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirme | Expectations basiques, checkpoints, integration dbt | A ecrit une suite d expectations, configure un checkpoint avec alerte | Ne connait que les tests dbt basiques |
| Senior | Integration Airflow, Data Docs, expectations statistiques avancees | A integre GE dans un pipeline Airflow, heberge les Data Docs sur GCS | N a jamais configure d actions sur echec de validation |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.