Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
est-il possible, via le script, de ne charger que la partie représentative d'une table, à savoir toutes les valeurs ne dépassant pas +/- x% de la moyenne.
autrement dit, comment éliminer les valeurs extrêmes d'une table lors de son chargement ?
merci d'avance
Cdlt
Bonjour,
Pourquoi ne pas calculer directement cette moyenne dans le script et ensuite lors du chargement LOAD faire un filtre dans une clause Where ?
Cdt,
Benjamin Drouin
Consultant BI
Voici un exemple :
1) On commence par charger une table de données non écrétée (table VALEUR_BRUTE)
2) On calcule la moyenne (table VALEUR_MOYENNE)
3) On récupère uniquement les valeurs ne dépassant pas un certain écart (ici 20%) avec la moyenne (VALEUR_ECRETEE)
VALEUR_BRUTE:
LOAD * INLINE [
Code, Valeur
1, 10
2, 12
3, 15
4, 15
5, 17
6, 8
7, 9
8, 14
9, 13
10, 9
];
VALEUR_MOYENNE:
LOAD
Avg(Valeur) as Moyenne
RESIDENT VALEUR_BRUTE;
LET MOY = Num(peek('Moyenne', 0, 'VALEUR_MOYENNE'));
DROP TABLE VALEUR_MOYENNE;
VALEUR_ECRETEE:
LOAD
Code,
Valeur,
'$(MOY)' as Moyenne,
fabs(Valeur-Num('$(MOY)', '0.00'))/Num('$(MOY)', '0.00')*100 as Ecart
RESIDENT VALEUR_BRUTE
WHERE fabs(Valeur-Num('$(MOY)', '0.00'))/Num('$(MOY)', '0.00')*100 < 20;
DROP TABLE VALEUR_BRUTE;
Bonsoir,
Effectivement, cela doit marcher, bien vu ! J'essai dés que possible.
Je pensais pourtant qu'il y avait une fonction tte prête à mettre comme condition dans le script sans avoir a passer par des tables temporaire.
Mais seul le résultat compte
A +
Bonjour Benjamin,
Je vous invite à considérer l'utilisation de la fonction fractile(). Elle est autant disponible au niveau du chargement de données qu'au niveau des graphes et pourrait répondre à votre besoin.
Cordialement,
Philippe
Bonjour à tous et merci de vos réponse,
En fait, je cherchais sous Qlik l'équivalent de la fonction 'moyenne.reduite' d'excel.
je ne l'ai pas (encore) trouvé mais je m'en sors en jouant effectivement avec les table temporaire et l'utilisation du 'group by' (exemple ci-dessous).
Ca marche, ce qui est l'essentiel, mais je ne trouve pas ça trés "élégant"
exmple:
quote
data_tmp:
LOAD serie,
serie1,
valeur
FROM
C:\Users\ho.bdemoustier\Desktop\ZZZZ.xlsx
(ooxml, embedded labels, table is Feuil1);
Join
LOAD
serie,
avg(valeur) as moyenne
Resident data_tmp group by (serie);
NoConcatenate
data:
load *
Resident data_tmp where valeur<=(moyenne*1.2);
drop Table data_tmp
unquote