RÉSOLU Mesure calculée JS
-
Bonjour,
Je me permets de solliciter votre aide pour la création d'une mesure calculée en JS.
J'ai plusieurs lignes (correspondant aux 'Tag', on filtre sur ceux qui se finissent par 'Estreaming_Cpt_Vitesse_Flux_Air') avec pour chacune une valeur moyenne (pas d'agrégation à faire, c'est une mesure dans la base), une valeur de référence minimale (fixée pour toutes les lignes à 0.2) et une valeur de référence maximale (fixée pour toutes les lignes à 1).Je peux sélectionner un jour, ou une plage de dates dans mes filtres.
L'objectif est de créer une mesure pour sommer le nombre de lignes dont la valeur moyenne est située au dessus de la valeur de référence min et au dessous de la valeur de référence max, puis de sommer également le nombre de lignes dont la valeur moyenne est supérieure à la valeur max.
(un compteur pour les lignes dans la fourchette (cpt1), un autre pour les lignes au dessus de la valeur max (cpt2) )Ces deux compteurs me permettent de calculer un indicateur : nb lignes au dessus de valeur max / nb lignes dans la fourchette (cpt2 / cpt1)
Selon la valeur retournée, on affecte un numéro correspondant à un indice (1,2,3,4,5).Si la valeur moyenne est en deçà de la valeur minimale de référence, la ligne n'est pas prise en compte.
Si je sélectionne une plage de jours, je dois prendre en compte la moyenne des valeurs moyennes.
Je cherche comment réaliser ce calcul d'indice sachant que la dimension Tag n'est pas toujours présente dans les flux.
Je vous joins la fonction que nous avons essayé de créer mais qui ne fonctionne pas pour le moment, ainsi qu'un Excel avec plus de précisions sur ce que j'aimerais.
Je vous remercie d'avance,
Justine
var ref='Estreaming : Vitesse flux air reference'; var ref_min='Estreaming : Vitesse flux air min reference' var nb_capteurs=0; var indice_tot=0; var t='Tag'; Packages.com.digdash.utils.MessageStack.getInstance().addText("vitref: " + ref); Packages.com.digdash.utils.MessageStack.getInstance().addText("tag: " + t); for(var i=1; i<=10; i++) { if(t==i.toString()+'_Estreaming_Cpt_Vitesse_Flux_Air') { vitcpt='Estreaming: Vitesse Flux Air moyenne'; Packages.com.digdash.utils.MessageStack.getInstance().addText("i= " + i + ": vitcpt="+vitcpt); if (vitcpt>ref_min) { nb_capteurs+=1; if(vitcpt>ref) { indice_tot+=1; } } } } var x=indice_tot/nb_capteurs; if ('niveau de risque'>=4 || nb_capteurs==0) { return 5; } else if(x>0.6) { return 4; } else if(x>=0.3 && x <=0.6) { return 3; } else if(x>0) { return 2; } else { return 1; }
-
Bonjour,
Le fichier Excel m'a permis de comprendre la problématique facilement.
Vous pouvez réaliser le calcul par les jours en:
- Créant les colonnes "Cpt1" et "Cpt2" avec leurs conditions,
- Créant la mesure calculée "X" puis "Indice"
Pour le calcul avec les plages, vous devrez:
- Créer une mesure calculée se basant sur "Valeur moyenne",
- Créer cette fois des mesures calculées vers "Cpt1 Avg" et "Cpt2 Avg" à partir de la mesure précédente,
- Créer la mesure "X Avg" à partir des mesures précédentes,
- Créer une mesure calculée "Indice" qui utilisera les mesures précédentes et aura comme condition quelque chose ressemblant à if(Tag(dmember)== "Overall") qui permettra au calcul du total de prendre en compte la condition.
Johnny
-
Je vous remercie pour votre réponse.
Nous avons réussi à obtenir de résultat attendu.
Cordialement,
Justine