Dataiku: implémenter un update incrémental

💡 Gagner en efficacité avec l’update incrémental dans Dataiku : un incontournable en production !

Quand on manipule des volumétries importantes dans Dataiku, le chargement des tables sources peut vite devenir un goulot d’étranglement à chaque exécution de pipeline. Résultat : des temps de traitements qui augmentent de jours en jours, une charge sur l’infra, et parfois même des jobs qui tournent encore lors de la connexion des premiers utilisateurs de la journée.

➡️ Et si on n’importait que ce qui a changé ?
C’est exactement ce que permet un update incrémental dans Dataiku.


🎯 Pourquoi faire de l’incrémental ?

  • 💾 Réduction du volume de données à traiter
  • 🚀 Accélération des temps d’exécution
  • 📉 Diminution de la charge sur les bases en entrée
  • 🔄 Meilleure scalabilité pour une mise en production sereine

🔧 Comment l’implémenter dans Dataiku step by step ?

  1. Identifier une colonne d’appui
    La plupart du temps, une date d’insertion ou de mise à jour (updated_at, created_at, load_date, etc.) formaté au bon niveau de granularité souhaité (année, mois, jour, heure etc.) et idéalement de type date (plus simple pour la suite). Si vous n’avez pas cette colonne, c’est le moment de l’ajouter en amont via une étape de data-prep supplémentaire😉
  2. Configurer le dataset source en « incremental mode »
    • Dans le dataset source (SQL ou fichier), activer le mode incrémental (Settings -> Activate Partitionning).
    • Définir la colonne de partition (ADD Dimension -> Time Range ou Discrete Values selon le type de votre colonne partitionnée et ce que vous souhaitez faire). ⚠️ Le Dimension Name doit correspondre exactement avec le nom de votre colonne partitionnée!
  3. Créer/Configurer la recipe adéquate Puisque vous avez déjà une colonne formaté adéquatement (soit dans votre table, soit via une « dataprep recipe »), vous pouvez alors créer une « sync recipe »
    • Dans la section « Input » de votre recipe, vous pouvez modifier la condition de synchronisation (journée exacte, depuis le début de la semaine, depuis le début du mois, etc.)
    • Dans la section « Output » de votre dataset, vous pouvez choisir d’écraser ou ajouter les données chargées identiques (case « Append instead of overwrite ») lors d’un lancement de la synchronisation
  4. Optionnel: Configurer le dataset cible
    • L’output peut également être partitionné si besoin par la suite dans votre flux de travail.
  5. Automatiser avec un Scenario
    Un scénario peut ensuite orchestrer tout ça :
    • récupérer la date (Define variables step): dans le cas où vous souhaitez par exemple lancez la sync recipe sur la date d’hier
    • Exécuter les recipes concernées (Build Step)
    • Ordonnancer l’ensemble: par exemple lancement du build tous les jours à minuit (time-based Triggers)
    • Envoyer un rapport de status (Reporters)

📌 Cas d’usage vécu :
Sur une plateforme Dataiku en contexte bancaire, le passage d’un chargement complet à un mode incrémental sur 4 tables volumineuses a divisé par plus de 10 le temps de traitement journalier. Le tout en quelques heures d’ajustement, sans toucher aux pipelines métier.


🔍 Un exemple issue de la base de connaissance officielle qui est très bien expliqué :
👉 Tutorial | Column-based partitioning


⚙️ Maîtriser ces optimisations est crucial dès l’initialisation de projets data à forte volumétrie.
Et vous, avez-vous eu le bon réflexe de travailler en incrémental dès le début du projet? 💬

#Dataiku #DataEngineering #SQL #AnalyticsEngineer #ETL #DataPlatform #Optimisation #BigData #BusinessDataAnalyst

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut