Aller au contenu
Ingestion

Ingestion par lots : complète ou incrémentale

Charger par lots, c'est copier la source à intervalle régulier : en entier si elle est petite, ou seulement les lignes modifiées depuis le dernier filigrane quand elle grossit.

  • batch
  • full load
  • incrémental
  • filigrane
  • watermark
  • updated_at
  • lot

Syntaxe

Modèle
-- Chargement complet : on recopie toute la source à chaque passageSELECT * FROM source;-- Chargement incrémental : seulement ce qui a changé dans la fenêtreSELECT *FROM sourceWHERE mis_a_jour_le >  :filigrane      -- fin du dernier lot réussi  AND mis_a_jour_le <= :borne_haute;   -- figée au début du lot-- Après un chargement réussi, et seulement là :-- filigrane := borne_haute

Exemple

Exemple concret
CREATE TABLE commandes_source (  id INTEGER PRIMARY KEY, client TEXT, montant REAL, mis_a_jour_le TEXT);INSERT INTO commandes_source VALUES  (1, 'Durand', 135.0, '2026-10-31 18:05'),  -- modifiée hier soir  (2, 'Moreau',  45.0, '2026-10-31 09:15'),  (3, 'Petit',   80.0, '2026-10-31 17:40'),  (4, 'Leroy',   60.0, '2026-10-29 11:00'),  -- déjà chargée  (5, 'Garnier', 99.0, '2026-11-01 00:20');  -- arrivée après la borneCREATE TABLE etat_pipeline (flux TEXT PRIMARY KEY, filigrane TEXT);INSERT INTO etat_pipeline VALUES ('commandes', '2026-10-31 00:00');-- Lot du 1er novembre, borne haute figée à minuitSELECT id, client, montant, mis_a_jour_leFROM commandes_sourceWHERE mis_a_jour_le > (SELECT filigrane FROM etat_pipeline WHERE flux = 'commandes')  AND mis_a_jour_le <= '2026-11-01 00:00'ORDER BY mis_a_jour_le;-- 2 | Moreau | 45.0  | 2026-10-31 09:15-- 3 | Petit  | 80.0  | 2026-10-31 17:40-- 1 | Durand | 135.0 | 2026-10-31 18:05-- Le chargement a réussi : on avance le filigrane jusqu'à la borneUPDATE etat_pipeline SET filigrane = '2026-11-01 00:00' WHERE flux = 'commandes';-- La commande 5 sera prise par le lot suivant.

À retenir

  1. Le chargement complet reste le bon choix pour les petites tables de référence (pays, magasins) ou quand la source n'a aucune colonne de date fiable.
  2. La colonne de filigrane doit être remplie par la base source à chaque modification et indexée ; une date saisie par l'application peut mentir ou rester vide.
  3. Rejouez un léger recouvrement (par exemple reprendre une heure avant le filigrane) pour rattraper les transactions validées en retard, et rendez le chargement idempotent pour absorber ces doublons.
  4. Piège : un filtre sur la date de modification ne voit jamais les suppressions. Il faut une capture des changements (CDC), un indicateur de suppression logique ou une réconciliation complète périodique.
  5. Piège : avancer le filigrane avant d'avoir confirmé le chargement. Si l'écriture échoue ensuite, les lignes de la fenêtre sont perdues sans erreur visible.

Voir aussi