Aller au contenu
Stockage analytique

Partitionnement et élagage

Partitionner range les fichiers d'une table dans des dossiers selon une colonne, souvent la date. Les requêtes qui filtrent sur cette colonne ne lisent alors que les dossiers utiles.

  • partition
  • hive
  • élagage
  • pruning
  • petits fichiers
  • compaction
  • date

Syntaxe

Modèle
Disposition « à la Hive » : une partition = un dossier clé=valeurlac/ventes/├── date_vente=2026-10-30/part-0.parquet├── date_vente=2026-10-31/part-0.parquet└── date_vente=2026-11-01/part-0.parquetRequête : WHERE date_vente = '2026-10-31'→ le moteur ne liste et ne lit que le dossier date_vente=2026-10-31 (élagage)

Exemple

Exemple concret
# Bibliothèque : pyarrowimport pyarrow as paimport pyarrow.dataset as dsimport pyarrow.parquet as pqventes = pa.table({    "date_vente": ["2026-10-30", "2026-10-31", "2026-10-31", "2026-11-01"],    "magasin": ["Lyon", "Lyon", "Nantes", "Lyon"],    "montant": [120.0, 98.0, 75.5, 64.0],})pq.write_to_dataset(ventes, "lac/ventes", partition_cols=["date_vente"])# lac/ventes/date_vente=2026-10-30/…parquet# lac/ventes/date_vente=2026-10-31/…parquet# lac/ventes/date_vente=2026-11-01/…parquetjeu = ds.dataset("lac/ventes", format="parquet", partitioning="hive")print(len(jeu.files))# 3lot = jeu.to_table(filter=ds.field("date_vente") == "2026-10-31")print(lot.num_rows, sorted(lot.column("magasin").to_pylist()))# 2 ['Lyon', 'Nantes']   (un seul dossier lu sur trois)

À retenir

  1. Partitionnez sur la colonne la plus souvent filtrée et à cardinalité modérée : la date du jour ou du mois convient, l'identifiant client crée des millions de dossiers minuscules.
  2. L'élagage ne fonctionne que si le filtre porte directement sur la colonne de partition. Un filtre sur une expression calculée (année extraite d'un horodatage) peut forcer la lecture de tout.
  3. Le partitionnement facilite aussi l'idempotence : réécrire le lot du 31 octobre revient à remplacer un seul dossier.
  4. Piège : partitionner trop finement (par heure et par magasin) pour peu de données. On obtient une multitude de petits fichiers, la liste des fichiers devient plus longue à lire que les données ; compactez-les régulièrement.

Voir aussi