Bonjour,
j'essaie de transformer une chaine de caractères en numérique ex :
00002000 et avoir pour résultat 2000.
J'ai essayé num, mais cela ne fonctionne, quelqu'un aurait une idée ?
par avance merci.
Bonjour,
j'essaie de transformer une chaine de caractères en numérique ex :
00002000 et avoir pour résultat 2000.
J'ai essayé num, mais cela ne fonctionne, quelqu'un aurait une idée ?
par avance merci.
Si tu utilises une fonction numérique, qlikview traitera automatiquement ta zone en numérique.
mazone -> 000020000
mazone+0 -> 2000
Sum(mazone) -> somme des valeurs de mazone traitées comme numériques.
En fait, je veux le traiter dès le chargement des données, et donc je ne trouve pas la fonction qui me permet de transformer la chaîne 00002000 vers un format numérique (2000), précision le fichier d'origine est du txt.
On peut le faire aussi dans le script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Load zone1,zone2+0 as zone2,zone3 from monfichier.txt ...
La fonction "num(nombre, format)" prend en paramètre un nombre et fait en sorte de l'afficher selon le format désiré.
La fonction "num#(expression, ...)" prend en paramètre une expression et fait en sorte de l’interpréter selon les paramètre suivants (format, séparateur de décimales, séparateur des milliers, etc...).
Supposons que le chargement est
Le résultat sera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 LOAD * INLINE [ TEST 0005000 ];
Vous voyez les "000" qui précèdent le nombre, mais notez que la valeur est alignée à droite, ce qui signifie que QlikView considère que la valeur est un numérique.
C'est parce que, au chargement, QlikView a été assez intelligent pour savoir que c'est un nombre (ce qui n'est pas toujours le cas, cf. plus loin dans le post).
aura le même résultat que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Data: LOAD num(TEST) AS TEST; LOAD * INLINE [ TEST 0005000 ];
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Data: LOAD TEST + 0 AS TEST; LOAD * INLINE [ TEST 0005000 ];
Le fait de faire une opération mathématique va retourner comme résultat un nombre, qui sera formaté au format par défaut dans votre script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Data: LOAD TEST * 1 AS TEST; LOAD * INLINE [ TEST 0005000 ];
De la même façon, une opération de chaine va retourner comme résultat une chaine de caractère.
retournera donc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Data: LOAD text(TEST) AS TEST; LOAD * INLINE [ TEST 0005000 ];
On voit bien que l'alignement est cette fois à gauche, ce qui permet de savoir que QlikView interprète cette valeur comme une chaîne de caractères.
Il est possible que votre source soit faite en sorte que QlikView n'arrive pas à savoir que votre colonne est en réalité un nombre, et interprétera comme une chaine.
Si votre source est interprétée comme une véritable chaine de caractère, il ne sera plus possible d'effectuer directement une opération mathématique dessus.
Ainsi,
retournera... rien ! (valeur nulle)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Data: LOAD TEST * 1 AS TEST; LOAD text(TEST) AS TEST; LOAD * INLINE [ TEST 0005000 ];
En effet, il n'est pas possible d'effectuer d'opération mathématique sur une chaine.
La fonction "num()" n'aura alors aucun effet, car elle attend un nombre en paramètre.
retournera aussi des valeurs nulles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Data: LOAD num(TEST) AS TEST; LOAD text(TEST) AS TEST; LOAD * INLINE [ TEST 0005000 ];
Il faut donc utiliser "num#()" qui permet de transformer une expression en nombre.
sera alors capable de retourner un nombre (non formaté).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Data: LOAD num#(TEST) AS TEST; LOAD text(TEST) AS TEST; LOAD * INLINE [ TEST 0005000 ];
Pour finir
retournera un nombre, formaté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Data: LOAD num(num#(TEST)) AS TEST; LOAD text(TEST) AS TEST; LOAD * INLINE [ TEST 0005000 ];
Bonjour,
En complément,
Si la zone contient le signe (+ ou -)
Qlikview m’interprète comme une chaîne de caractère. Comment faire pour qu'il l’interprète en numérique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 LOAD * INLINE [ TEST +0005000 ];
merci d'avance.
Bonjour.
Load Test * 1 as TestNum devrait fonctionner.
Tu dois pouvoir aussi charger la valeur telle quelle et faire des graphiques avec Test * 1. A voir
Bonjour,
Je me permets de répondre à cette discussion, ma question étant dans le périmètre :
- Sous QV 11.00
- Import d'un fichier plat ".csv", délimitateur ';'
j'ai 1 colonne exprimant un montant qui s'exprime ainsi 518.78 (cinq cent dix huit virgule soixante dix-huit pour être précis). Le séparateur des décimales est bien le point dans ce fichier
Mes variables locales dans QV sont :
Après chargement de ce fichier externe via un LOAD, la donnée se visualise ainsi dans une liste de selection : 5.2e + 002 visuellement aligné à droite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET DecimalSep='.'; SET MoneyThousandSep=' '; SET MoneyDecimalSep='.'; SET MoneyFormat='# ##0.00 ;-# ##0.00 ';
Dans un tableau, si j'applique le format monétaire, je vois visuellement 518.78 €.
Par contre, si j'exporte sous excel ce tableau, l'export me donne un format de visualisation à 0.52€ (alors que la cellule contient bien 518,78).
Si j'applique un format monétaire à cette cellule excel, je retrouve mes 518.78€
Comment puis-je faire pour avoir un format correct d'export ?
Par avance merci pour votre aide.
Vous avez essayé le format "monétaire" et le format "défaut" en ayant mis en dur le format souhaité, et les 2 ne conviennent pas ?
Bonjour,
J'ai essayé un "MONEY(VAR) as VAR" tout comme le "NUM(NUM#(VAR)) as VAR" que vous avez préalablement proposé et ça ne fonctionne pas.
Quand je fais un aperçu de cette colonne dans mon modèle vectoriel (dans le visionneur de table) la colonne est exprimé dans un format 5.2e+002 (alignement à droite)
Quand je met cette colonne dans une liste de sélection, le format affiché est identique
Quand (dans un tableau croisé par exemple) j'utilise cette colonne et lui applique un format monétaire, l'affichage dans ce tableau dans Qlikview me donne un format monétaire correct. Les sommes et autres calculs se font sans soucis.
Lors de l'export excel, les données exportées dans excel (2010) affichent 0.52 €.
Si je clique dans la cellule excel, la valeur affichée dans la barre de formule donne bien 518,78 (c'est bien une virgule qui s'affiche et pas un point) et le format indique monétaire
Si je passe le format de cette cellulle en "Standart", la valeur affichée devient 518,78
Si je repasse le format de cette cellule en format monétaire , la valeur devient alors bien 518.78€ !!!
Par avance merci pour votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager