IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Mediane d'une aggregation


Sujet :

QlikView

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut Mediane d'une aggregation
    Bonjour,

    Je souhaite calculer la différence horaire des médianes des valeurs 'Grandeur'
    Pour ce faire je mets dans un tableau:

    -dimension: nom
    -expression: median({$<[Emplacement={'Sit1'}>}aggr(Grandeur,MakeDate(Année,Mois, Jour),hour(date)))
    et fais la différence avec deux valeurs de situation.
    Mais cela ne fonctionne pas, mon tableau contient 1 ligne avec '-'.

    En faisant un test avec:
    -dimension: nom, année, mois, jour, hour(Date)
    -expression: median({$<[Emplacement={'Sit1'}>}aggr(Grandeur,date))
    cela fonctionne.

    Je ne comprend pas pourquoi:
    La date étant au format JJ/MM/AAAA HH:MM elle est unique donc comment fait il pour aggreger ?
    Je pensais que l'aggregation fournissait les valeurs pour chaque couple de JJ/MM/AAAA et HH.

    Merci pour vos conseils.

  2. #2
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Dans les paramètres de la fonction AGGR, il est déconseillé d'utiliser des fonctions.
    Je vous invite donc à utiliser directement "Année,"Mois, Jour" sans MAKEDATE.

    La fonction HOUR peut potentiellement être une fonction d'affichage et non de transformation. A votre place, je créerait un nouveau champ au chargement qui contient l'heure. Ainsi vous pourrez utiliser ce champ dans votre agrégation plutôt qu'utiliser une fonction (comme au point précédent).

    Pour finir, le premier argument d'une fonction AGGR est sensé être une expression. Idéalement, utilisez toujours une fonction d'agrégation dans une expression (par exemple "only()" si vous vous attendez à n'avoir qu'1 seule valeur).
    Tel que vous avez écrit votre expression dès qu'il y aura 2 valeurs possibles pour la même date, votre expression retournera "-".

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Bonjour PhunkyBob,

    J'ai ajouté dans le script le calcul de l'heure et fais mon aggregation sans passer par Makedate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    median({$<[Emplacement]={'Sit1'}>}aggr((Only(Grandeur)),Année,Mois,Jour,Heure))
    Si je laisse dans l'expression uniquement "Nom" cela me renvoi une seule valeur dans le tableau - avec ou sans only

    Si je mets dans l'expression "Nom, Année,Mois,Jour,Heure" cela fonctionne mais alors je ne vois pas à quoi sert la fonction d'aggregation.
    Ne devrait elle pas me renvoyer une valeur pour chaque ensemble "Année,Mois,Jour,Heure" ?

    Merci

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Dans votre expression, effectivement l'AGGR ne sert pas à grand chose.
    Cette fonction sert à pré-calculer l'équivalent d'un tableau agrégé par la liste de vos dimensions souhaitées.

    Là, vous utilisez la fonction "only()" donc c'est que vous vous attendez à n'avoir qu'1 valeur. Donc aucune raison de pré-agréger les données.

    Pouvez vous donner un exemple simple de données et ce que vous attendez comme résultat ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Pour illustrer mon problème, j'ai des capteurs associés à des noms qui enregistrent toutes les n minutes une grandeur.
    je souhaite calculer une médiane des valeurs de la grandeur toutes les heures par jour et nom.

    Voir PJ

    C'est pour cela que j'utilisais l'aggregation Année, Mois, Jour, Heure

    merci
    capteur.xlsx

  6. #6
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Dans votre fichier Excel, comme résultat vous mettez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Résultat						
    Nom	Année	Mois	Jour	Heure		Mediane(val)
    toto1	2019	1	1	1		0,45
    toto1	2019	1	1	2		3,6
    toto2	2019	1	1	1		0,55
    toto2	2019	1	1	2		2
    Ca correspond à la médiane par Nom / Année / Mois / Jour / Heure.
    Cela veut dire qu'en mettant ces 5 dimensions dans votre graphique et en utilisant une simple "median()", vous aurez le résultat attendu.

    Il faut utiliser la fonction "aggr()" dans le cas où le résultat attendu est par exemple "Pour chaque nom, la moyenne des médianes agrégées au jour et à l'heure".
    C'est à dire un tableau avec comme dimension "Nom" et comme expression quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    avg(
    aggr(
    median(Grandeur)
    , Nom, Année, Mois, Jour, Heure
    )
    )
    Pour toto1, ça donnerait donc 2.025.


    Ou alors peut-être souhaitez-vous la médiane des moyennes ? (ce qui donnera un résultat complètement différent)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Bonjour PhunkyBob,

    Effectivement l'utilisation de l’agrégation n'était pas appropriée pour calculer la médiane horaire des valeurs.
    J'ai simplifié et cela marche bien.

    Merci

  8. #8
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Si votre problème est résolu, n'hésitez pas à cliquer sur "Résolu".

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Finalement j'ai utilisé:
    - courbe horaire: expression nom, année, mois, jour, heure et dimension median(Grandeur)
    - indicateur de delta entre capteur: expression nom et dimension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    max(
    aggr(
    median({$<[Emplacement]={'Sit1'}>}Grandeur)
    -median({$<[Emplacement]={'Sit2'}>}Grandeur)
    , Nom, Année, Mois, Jour, Heure))
    L'agregation permet de donner la valeur max globale par nom du delta des médians heure par heure

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Mediane d'une matrice
    Par Mlbest dans le forum MATLAB
    Réponses: 0
    Dernier message: 24/08/2017, 13h43
  2. Automatiser le calcule de la mediane sur une plage
    Par BINO-OTA dans le forum Excel
    Réponses: 2
    Dernier message: 25/07/2017, 17h52
  3. Median d'une plage de cellule
    Par Gualino dans le forum Excel
    Réponses: 2
    Dernier message: 27/03/2013, 11h26
  4. Réponses: 1
    Dernier message: 29/08/2008, 15h21
  5. filtrage mediane d'une image
    Par hamska2 dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 31/05/2007, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo