Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
cdelafoy
Contributor
Contributor

Variation de données par trimestre

Bonjour,

Je dois intégrer tous les trimestres un fichier identique dont les données sont les suivantes :

I have to integrate all quarters the same file in which the data are :

Fichier 1er trimestre

Nom

Compteur

BOGOTA

82778

HELSINKI

79950

GEORGETOWN

18585

TUNIS

6955

Fichier 2ème trimestre

Nom

Compteur

BOGOTA

135558

HELSINKI

92155

GEORGETOWN

25479

TUNIS

12974

Fichier 3ème trimestre

Nom

Compteur

BOGOTA

163155

HELSINKI

101071

GEORGETOWN

29937

TUNIS

14099

Comment faire en sorte d’avoir non pas le cumul mais simplement la variation en données comme cela :

How to have, not accumulated data, but simply the data variation like this :

Fichier 1er trimestre

Nom

Compteur

BOGOTA

82778

HELSINKI

79950

GEORGETOWN

18585

TUNIS

6955

Fichier 2ème trimestre

Nom

Compteur

BOGOTA

52780

HELSINKI

12205

GEORGETOWN

6894

TUNIS

6019

Fichier 3ème trimestre

Nom

Compteur

BOGOTA

27597

HELSINKI

8916

GEORGETOWN

4458

TUNIS

1125

L’objectif étant de pouvoir faire des graphiques d’évolution trimestrielle du compteur.

The objective is to be able to make graphics quarterly evolution of the counter.


Merci. Thanks

Christophe

10 Replies
flochi75
Creator III
Creator III

Bonjour Christophe,

si j(ai bien compris, tu as 1 fichier excel par trimestre et tu souhaites suivre l'évolution.

à ta place, je nommerai chaque colonne "compteur" par le trimestre (ex "T1_2015", "T2_2015"...) puis je chargerai les fichier en faisant une clé sur le champ nom .

ATTENTION : pour éviter les boucles, 1 fichier doit être le fichier unique contenant toutes les clés des autres fichiers.

par ex : fichier 1 contient "Nom',"CléT2", "CléT3", "CléT4", "T1_2015" (Les Clés étant la duplication de la colonne "Nom")

            Ficher 2 contient "CléT2","T2_2015"

            etc...

du coup, Qlikview de fera une table avec :

Nom/T1_2015/T2_2015... !

et tu pourras faire tes calculs d'évolution...

ex :

Capture.PNG

je te joins les fichiers que j'ai utilisé...

cdelafoy
Contributor
Contributor
Author

Merci pour ta réponse.

Seulement, mes fichiers ne se cantonnent pas seulement à 2 colonnes ce serait trop simple (c'était pour l'exemple), il y en a en fait 160... Certes, toutes ne sont pas utiles, j'en conserve 50. Y-aurait-il la possibilité de renommer les champs de manière automatique via le script chaque trimestre.

Sinon, j'avais imaginé qu'à partir du script, on aurait pu automatiser ce calcul (de variation) et ainsi obtenir une nouvelle série avec les données unitaires trimestrielles... c'est possible ?

Merci

Christophe

flochi75
Creator III
Creator III

C'est un autre problème...

Je ne vois pas très bien comment sont structurées tes données au départ...

s'il s'agit de plusieurs onglets au sein d'un même fichier, il y a une demande qui est flaguée "résolue" ici :

aide script pour import de plusieurs onglet excell concernant des périodes hebdomadaires

peut être cela répond à ton problème

s'il y a différents fichiers excel, je ne sais pas si tu peux les charger autrement que 1 à 1 et à renommer les différents champs en fonction de tes besoins...

Après, une fois ce pb de chargement résolu, tu peux bien entendu faire un load imbriqué et faire tes calculs dans le script...

cdelafoy
Contributor
Contributor
Author

voici un extrait d'un des fichiers source trimestriel

Christophe

brunobertels
Master
Master

Bonjour Christophe,

Je vois que ton exemple de fichier fonctionne bien avec un principe d'onglets par trimestre.

Aussi la piste de Florent et le lien qu'il donne devrait t'aider. C'est moi qui avait posté cette question "importation de plusieurs onglets Excel".  Mon problème étant de pouvoir importer des onglets Excel de semaines mois et trimestres qui s'ajoutent automatiquement suivant le moment où on fait l'import. De pouvoir distinguer ces onglets par type semaine trimestre mois ajouter un champ de date à la base ( week month quarter). Xavier Retaillaud m'a apporté la solution avec le script ci dessous que tu peux adapter à ton cas :

LIB CONNECT TO 'Excel Files zzz';

  XlsInfo:

  SQLTables;

  DISCONNECT;

  let var=NoOfRows('XlsInfo');

  // Pour chaque feuille du classeur

  FOR i = 0 to $(var)-1

  // sheetName = nom de la feuille

    let sheetName=subfield(peek('TABLE_NAME', i,'XlsInfo'),'$',1);

    // weekNb = numéro de la semaine

    let weekNb=floor(replace(Upper(sheetName),'S',''));

    // si la feuille commence par S suivi d'un nombre compris entre 1 et 53

    IF upper(left(sheetName,1))='S' and weekNb>=1 and weekNb<=53 then


      // alors on charge toute la table et on rajoute une colonne semaine avec notre variable issue du nom de la feuille en valeur

      MyTable:

      LOAD *, $(weekNb) as Semaine

      FROM [lib://Desktop/zzz.xlsx](ooxml, embedded labels, table is '$(sheetName)');

    END IF

NEXT i

DROP Table XlsInfo

Ça marche très bien pour moi n'hésites pas si besoin.

Bruno

flochi75
Creator III
Creator III

bonjour Christophe, bonjour et merci à Bruno,

en voyant ton fichier, il me semble que les données qui t'intéressent sont celles-cio :

Capture.PNG

je pense que la formule de Bruno peut fonctionner...

Si tu as autant de fichier excel que tu as de mise à jour, tu peux utiliser un fichier .vbs tel que celui que j'utilise pour concaténer des fichiers txt que je reçois quotidiennement.

Capture2.PNG

cela me génère un fichier concaténé qui reprend tous les Txt qu'il trouve. Ensuite tu pourrais te baser sur les dates "modifié le" pour faire tes calculs d'évolution...

Qu'en penses- tu ?

flochi75
Creator III
Creator III

ne t'inquiète pas, ce vbs est compliqué car les fichiers sources en txt sont variables, donc il a fallu les structurer...

cdelafoy
Contributor
Contributor
Author

Merci pour ce script.

Lorsque j'importe le fichier excel en odbc, ma table TABLE_NAME contient bien mes différents onglets mais en rajoutant un $ à la fin -> '2015_T1$' ou '2015_T2$' ou '2015_T3$'.

Du coup, lorsque j'exécute la suite


FOR i = 0 to $(var)-1

  let sheetName = subfield(peek('TABLE_NAME', i,'Donnees'),';',1);

$(sheetName):

  LOAD * FROM [Chemin\2015.xlsx](ooxml, embedded labels, table is $(sheetName)); -> ici, il ne reconnaît pas cet onglet puisqu'il n'y a pas de $ dans le fichier d'origine ot TABLE_NAME en génère un...

Comment faire pour que ce sigle soit retiré dans les champs de TABLE_NAME ?

Merci

brunobertels
Master
Master

Bonjour

Remplace ceci :

  let sheetName = subfield(peek('TABLE_NAME', i,'Donnees'),';',1);

par  ceci :

let sheetName=subfield(peek('TABLE_NAME', i,'Donnees'),'$',1);

ce qui devrait t'enlever le signe $ enfin je crois que ça marche comme çà , j'ai une connaissance très approximative des scripts.

Bruno