Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour
Je souhaite alimenter une table STAT_MOIS puis calculer des indicateurs dans une table STAT_AN qui s'appuient sur des valeurs de la table STAT_MOIS et enfin compléter la table STAT_MOIS avec les résultats calculés dans la table STAT_AN.
Voici un exemple simple de script (c'est un cas d'école, mon script est beaucoup plus complexe)
STAT_MOIS:
LOAD * INLINE [
CodePeriode, CodeIndicateur, Valeur
201301, 1, 10
201302, 1, 20
201303, 1, 30
201304, 1, 40
201301, 2, 5
201302, 2, 10
201303, 2, 15
201304, 2, 20
];
STAT_AN:
LOAD
LEFT(CodePeriode, 4) as CodeAnnee,
CodeIndicateur,
SUM(Valeur) as ValeurAnnee
RESIDENT STAT_MOIS;
Lorsque le chargement de STAT_AN est terminé, la table STAT_MOIS n'est plus en mémoire et je ne peux donc pas la compléter avec une jointure sur la table STAT_AN. Le seul moyen que j'ai trouvé est de passer par une table temporaire. Est-ce la seule solution ? Existe-t-il un moyen de remettre une table en "dernière position dans la mémoire" ?
Write
STAT_AN:
NoConcatenate
LOAD
LEFT(CodePeriode, 4) as CodeAnnee,
CodeIndicateur,
SUM(Valeur) as ValeurAnnee
RESIDENT STAT_MOIS;
And see what happens
NOCONCATENATE est inutile ici puisque seul le champ CodeIndicateur est commun aux deux tables.
ça ne change rien au problème ...
Bonjour,
je pense qu'il manque la clause GROUP BY :
STAT_MOIS:
LOAD * INLINE [
CodePeriode, CodeIndicateur, Valeur
201301, 1, 10
201302, 1, 20
201303, 1, 30
201304, 1, 40
201301, 2, 5
201302, 2, 10
201303, 2, 15
201304, 2, 20
];
STAT_AN:
LOAD
LEFT(CodePeriode, 4) as CodeAnnee,
CodeIndicateur,
SUM(Valeur) as ValeurAnnee
RESIDENT STAT_MOIS
Group by LEFT(CodePeriode, 4), CodeIndicateur;
Aurélien
+1 pour le GROUP BY
Mais le problème reste inchangé