Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
demoustier
Creator
Creator

Ecrétage

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

5 Replies
Not applicable

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

http://www.competencebi.com/

Not applicable

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;

demoustier
Creator
Creator
Author

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 +

pgrenier
Partner - Creator III
Partner - Creator III

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

demoustier
Creator
Creator
Author

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