Dans ma BDD source j'ai une table qui contient tous les lignes de mouvements des débits et des crédits de l'entreprise.
Pour calculer le fait "résultat" il faut faire un agrégat sur toutes ces lignes.
Mon problème est que cette table de mouvements contient actuellement près de 5 millions de lignes !!! Ce qui fait que faire le calcul sur tout cet ensemble prend énormément de temps à l'ETL.
Comment optimiser le chargement de ma table de fait qui contient le fait "résultat"?
J'avais pensé procéder comme suit: calculer à une date t1 le montant M1 du résultat .
Puis à un instant t2 (t1<t2), prendre les lignes de mouvements créés entre t1 et t2, calculer le montant M' du résultat correspondant à l'agrégation des lignes de mouvements obtenus.
Puis, mettre à jour le montant M2 du résultat à la date t2 avec:
M2 = M1 + M'
Ce qui fait qu'à l'instant t1 l'ETL mettra du temps à faire l'agrégat sur les 5 millions de lignes mais par la suite, le calcul sera plus léger à chaque fois qu'on lancera l'ETL. Qu'en pensez-vous?
Partager