Skip to main content

Francophones

Announcements
QlikWorld 2023, a live, in-person thrill ride. Save $300 before February 6: REGISTER NOW!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Dernière table en mémoire

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" ?

4 Replies
alexandros17
Partner - Champion III
Partner - Champion III

Write

STAT_AN:

NoConcatenate

LOAD

    LEFT(CodePeriode, 4) as CodeAnnee,

    CodeIndicateur,

    SUM(Valeur) as ValeurAnnee

RESIDENT STAT_MOIS;


And see what happens

Not applicable
Author

NOCONCATENATE est inutile ici puisque seul le champ CodeIndicateur est commun aux deux tables.

ça ne change rien au problème ...

Aurelien_Martinez
Partner - Specialist
Partner - Specialist

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

Help users find answers! Don't forget to mark a solution that worked for you!
Not applicable
Author

+1 pour le GROUP BY

Mais le problème reste inchangé