Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Pivot chart

Bonjour,

Voila ce que j'ai :

Capture.PNG

Une première dimension temps, ensuite une dimension =if(...) qui contient une liste de source,

puis en expressions, la distribution max on, off, pour cent de on et pour-cent de off.

Petit problème, comme on peut le voir pour l'heure 0, la liste des sources ne s'affiche pas... Si j'en selectionne une son nom apparait, mais plusieurs j'obtiens le fameux : -

Que dois-je faire, je suis bloqué la ?

Cordialement.

1 Solution

Accepted Solutions
Not applicable
Author

Oups désolé pour la mésentente, j'ai mis les underscore pour cacher mes champs (close de confidentialité obligé).

Mon problème était tout béte en faite... Mon expression prend le max des sum des Neptune par heures. Alors que dans mon tableau j'affiche déja ses donnée par heures, en passant par un affichage par mois cela fonctionnait.

Du coup, maintenant je fais simplement un sum() et la donnée se précise en fonction de la dimension temps.

Je ne sais pas si je suis térs clair ^^ Mais merci a vous, expliquer mon probléme m'a aider a le comprendre 

View solution in original post

7 Replies
hic
Former Employee
Former Employee

Ça peut dépendre de ce que vous avez dans les paramètres de la fonction If(). Vous devez utiliser des agrégations ici, pas des références des champs directs.

https://community.qlik.com/blogs/qlikviewdesignblog/2014/06/16/use-the-aggregation-functions

HIC

Not applicable
Author

bonjour et merci de votre réponse,

Ce n'est pas une fonction d’agrégation, j'ai =if (nameH like 'Neptune_*', nameH).

Comment puis-je faire dans ce cas pour avoir pour chaque heure la liste de mes nameH ?

edit :

J'ai changé un peu le positionnement des colonnes / lignes.

Capture.PNG

Ma dimension avec =if (nameH like 'Neptune_*', nameH) affiche maintenant ma liste de nameH, mais les valeurs sont toutes a null.

Pourtant si je met la formule dans une liste box a coté,et que je selectionne dans cette listbox j'ai des valeurs..

hic
Former Employee
Former Employee

Je dois voir vos données pour répondre. Si je fais la même chose avec mes données générées, il fonctionne très bien.

Image2.png

(Ma réponse précédente n'était pas tout à fait correcte. Il aurait été pertinent si l'expression avait été une mesure et pas une dimension.)

HIC

Not applicable
Author

Voici un screen de la requête qui reprend les données utilisées dans mon chart :

Capture.PNG

Lors du chargement j'effectue la même requête (sans les conditions) j'ai donc un tableau avec toutes mes infos comme présenter ci dessus dans qlikview

Ma dimension

=if (hc_nameH='Neptune_*' and metric_nameH = '____'   and (service_descriptionH = 'NEP-____INPUTRATE' OR service_descriptionH = 'NEP-____-INPUTRATE' OR service_descriptionH like 'NEP-____-*INPUTRATE')

,host_nameH)

et mes deux expressions

=round( max( aggr( sum({<metric_nameH = {_____}, service_descriptionH = {'NEP-____INPUTRATE', 'NEP-____-INPUTRATE'}>}avg_valueH)  ,dtimeH)  ),0.01)

et

=round(  max(  aggr(  sum({<metric_nameH = {_____}, service_descriptionH = {'NEP-_____-INPUTRATE'}>}avg_valueH)  ,dtimeH)  ),0.01)

La je séche un peu, encore merci de votre aide !

Not applicable
Author

Bonjour,

Je ne sais pas si je comprend bien tout votre code mais si je subbodore bien :

On ne peut pas utiliser de joker directement dans une comparaison.

=> hc_nameH='Neptune_*' ne sera pas vrai pour ce qui commence 'Neptune_'.

=> idem pour le _ s'il est sensé remplacer 1 caractère.

En script de qlik if faut utiliser la fonction WildMatch() pour faire cela.

  • * : joker pour une chaîne de caractères
  • ? : joker pour un seul caractère

Exemple : if(WildMatch(NameField,'*pierre*'), 1, 0) renvoie 1 si NameField contient pierre, sinon renvoie 0.

NB : WildMatch n'est pas sensible à la casse des caractères. Je vous conseille de consulter l'aide pour cette fonction qui offre d'autres possibilités.

Cordialement,

Xavier.

Not applicable
Author

Idem, j'ai un doute sur la syntaxe des expressions:


=round( max( aggr( sum({<metric_nameH = {_____}, service_descriptionH = {'NEP-____INPUTRATE', 'NEP-____-INPUTRATE'}>}avg_valueH)  ,dtimeH)  ),0.01)

En rouge : que voulez-vous obtenir ?

En bleu : est-ce que le underscore _ est utilisé comme un joker ?

Xavier.

Not applicable
Author

Oups désolé pour la mésentente, j'ai mis les underscore pour cacher mes champs (close de confidentialité obligé).

Mon problème était tout béte en faite... Mon expression prend le max des sum des Neptune par heures. Alors que dans mon tableau j'affiche déja ses donnée par heures, en passant par un affichage par mois cela fonctionnait.

Du coup, maintenant je fais simplement un sum() et la donnée se précise en fonction de la dimension temps.

Je ne sais pas si je suis térs clair ^^ Mais merci a vous, expliquer mon probléme m'a aider a le comprendre