Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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 :
je te joins les fichiers que j'ai utilisé...
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
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...
voici un extrait d'un des fichiers source trimestriel
Christophe
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
bonjour Christophe, bonjour et merci à Bruno,
en voyant ton fichier, il me semble que les données qui t'intéressent sont celles-cio :
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.
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 ?
ne t'inquiète pas, ce vbs est compliqué car les fichiers sources en txt sont variables, donc il a fallu les structurer...
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
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