Années
Véhicules
Pipeline médallion · Spark · MinIO · Viridis × 264653

Les taxis New-Yorkais,
dix-sept ans de schémas réconciliés

Yellow (2009), green, fhv, fhvhv (2016 → 2025) : les fichiers TLC changent de schéma au fil des ans (GPS brut avant juillet 2016, identifiants de zone ensuite, suppléments apparus progressivement). Un pipeline en une seule commande : ingestion telle quelle dans un stockage objet, réconciliation distribuée avec Spark (spark://spark-master:7077), agrégats métier, puis ce dashboard statique. Habillage : #264653 · #2a9d8f · #e9c46a · #f4a261 · #e76f51, heatmap et carte en viridis 100 pas, du clair au foncé. Les filtres années × véhicules de la barre ci-dessus pilotent tous les graphiques ; cliquez une zone sur la carte pour la mettre au focus.

Bronze : parquets bruts tels quels Silver : schéma canonique typé Gold : un mart JSON par analyse make run
01

Le pipeline en trois couches

Le brut est persisté avant toute transformation, puis raffiné couche par couche. Chaque étape tourne sur le cluster Spark (master + worker), jamais en local.

Bronze

Persistance du brut

Chaque parquet est copié octet pour octet vers bronze/<vehicle_type>/<year>/<month>/.

  • ingestion idempotente, manifeste auto-réparant
  • manifeste JSON cumulé dans bronze/_manifest/
  • météo stub : bronze/weather/<year>/
➜
Silver

Réconciliation & typage

Schémas legacy (2009), modernes, fhv et fhvhv fusionnés vers un modèle canonique unique.

  • suppléments absents avant introduction → null, jamais 0
  • horodatages corrompus écartés (fenêtre bornée)
  • Parquet partitionné vehicle_type/year/month sur s3a://silver/
➜
Gold

Agrégats métier

Un mart JSON par analyse : suppléments, flux, prix/km, activité jour×heure, activité par zone, chronologie mensuelle, météo (en attente).

  • s3a://gold/ puis export vers ce site
  • agrégats légers → dashboard 100% statique et filtrable
  • vérifiable dans la console MinIO (:9001)
# tout le pipeline, une seule commande :
make run # ajouter SAMPLE=3 pour ne traiter que 3 fichiers
02

Vue d'ensemble

Données ingérées depuis /data/raw, traitées sur spark://spark-master:7077. KPI et graphiques réagissent aux filtres globaux.

courses (filtres actifs)
période filtrée
années sélectionnées
véhicules sélectionnés
de parquet brut ingéré
Courses par type de véhiculedans le filtre courant · légende cliquable
Courses par annéedans le filtre courant
03

Chronologie mensuelle

« Comment l'activité évolue-t-elle mois par mois, par type de véhicule ? » Empilements par véhicule, zoom au slider ou à la molette.
04

Carte des 263 zones TLC

« Où les courses démarrent-elles ? Choroplethe viridis (clair → foncé) sur les polygons officiels des taxi zones. Cliquez une zone pour la mettre au focus : les flux et le panneau de détail se mettent à jour. »

Chargement de la carte des 263 zones…

Top zones (filtre courant)départs
Aucune zone sélectionnée
cliquez la carte pour focus une zone
Départs—
Arrivées—
Tarif moyen—
Prix/km moyen—
05

Évolution des suppléments tarifaires

« Pour chaque supplément apparu progressivement dans le schéma, montrer son évolution dans le temps, par type de véhicule. »

Couleur = supplément · trait plein vs pointillé = véhicule · légende cliquable · filtres globaux actifs.

06

Flux de prises en charge / déposes

« Visualiser les flux de courses entre zones de départ et d'arrivée. »
07

Prix au km par année et zone de départ

« Un ridgeline plot montrant l'évolution des prix par km au fil des années, pour une zone de départ donnée. »
Comparateur de zonesprix/km moyen pondéré par année. Cochez plusieurs zones pour les superposer
08

Fréquence des courses : jour × heure

« Une fonction qui, pour une année donnée en paramètre, produit une heatmap (jour de la semaine × heure) de la fréquence des courses, pour chaque type de véhicule. »
Profil horairesomme des 7 jours, tous les véhicules de l'année sélectionnée
09

Distance et pourboire

« Le prix au km s'effondre-t-il sur les longs trajets ? Et le pourboire suit-il les années ? »
Prix/km par bande de distanceune courbe par année · filtres globaux actifs
Taux de pourboire par annéepourboires cumulés / tarifs cumulés · légende cliquable
10

Écart de prix selon la météo

« Comparer le prix des courses (par km) selon les conditions météo au moment de la course, par rapport au prix moyen général. »