technical-case-data-engineer-jean-philippe-rodrigue #73
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR contenant les étapes d’ingestion, le schéma de données proposé et les réponses finales au test technique.
Elle comprend trois parties principales:
1. Le flux de donnée:
Les fichiers se trouverons dans le data_store/ une fois le script exécuté. Bien sûr, en production, j'utiliserais des tables et une base de données.
2. Orchestration
J’ai choisi Airflow, que j’ai déployé via Docker, pour refléter un setup proche d’un environnement de production.
Airflow offre plusieurs avantages :
Cela permet d’avoir une orchestration claire et robuste.
3. Tests automatisés
J’ai ajouté quelques tests Pytest pour valider la robustesse du pipeline :
test_bulk_insert_and_watermark.py : vérifie que les insertions bulk respectent bien le watermark (pas de doublons, reprise correcte).
test_incremental_idempotent.py : s’assure que les chargements incrémentaux sont idempotents (relancer le job ne crée pas de doublons).
test_incremental_load.py : valide que les nouveaux lots de données sont correctement ingérés et ajoutés aux historiques existants.
test_iter_pages.py : teste la pagination des appels API afin de garantir que toutes les pages de résultats sont bien récupérées.
Au plaisir de vous rencontrer :)