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 :

Graphique avec courbe dissociée


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 Graphique avec courbe dissociée
    Bonjour,

    J'essaye de créer un graphique avec n courbes représentant n capteurs.
    Dans dimension: date et capteur
    Dans expression: niveau

    Mes capteurs sont sélectionnables par localisation, localisation détaillée, etc.
    Le graphe réagit bien en fonction des différents critères sélectionnés et affiche les capteurs souhaités.

    Par contre je voudrais rajouter une courbe qui est indépendante des critères sélectionnés.
    Je sais créer un axe des abscisses intégrant les dates des n capteurs et de la courbe indépendante mais comme celle ci ne répond pas aux critères sélectionnés évidement Qlikview ne l'affiche pas.

    Y a t'il une façon d'afficher une courbe "independante" ?

    Merci

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Bonjour,

    c'est UNE SEULE courbe indépendante ou une courbe PAR capteur ?

    Si c'est une par capteur il faut exclure les critères qui ne doivent PAS pouvoir être sélectionnés en utilisant du Set Analysis
    Si c'est UNE SEULE il va vous manquer l'utilisation du mot clé TOTAL pour créer une agrégation des n capteurs
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  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 nuke_y

    Je souhaite représenter sur le graphe les n capteurs sélectionnables par les critères (localisation, ...) et ajouter une courbe indépendante (la marée) qui a uniquement en commun avec les n capteurs l'axe des x (date).

    Je n'ai pas compris:
    "Si c'est UNE SEULE il va vous manquer l'utilisation du mot clé TOTAL pour créer une agrégation des n capteurs ".

    En écrivant Sum({1} Total NiveauMarée) je détache bien la courbe marée de mes critères capteurs par contre je ne souhaite pas faire la somme mais avoir tous les points de la marée.
    Je ne sais pas quelle fonction utiliser en Set analysis.

    Merci

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je crois que j'ai compris : ce que vous voulez faire n'est pas simple. Pas franchement impossible mais pas simple. La meilleure solution, à mon avis, c'est d'ajouter la marée comme si c'était un capteur comme un autre puis de bidouiller en set analysis pour qu'elle s'affiche tout le temps. Avec un set du genre : capteur = P(Capteur) + {'Marée'}
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  5. #5
    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
    Une autre solution "bidouille" consiste a superposer 2 graphiques (dont un transparent) et de faire en sorte que leur échelle (au moins l'abscisse) soit identique.

  6. #6
    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 nuke_y

    J'ai réintégré la marée avec les capteurs dans une table unique: date, niveau, Id

    Le graphe fonctionne dès lors que l'on ne choisi pas une localisation qui n'existe pas pour la marée

    Pour l'expression du graphe je vais essayer d'imbriquer 2 sets: la sélection active pour les capteurs et toutes les données pour la marée.

    En testant le second set Qlikview m'indique une erreur:
    Nom : Capture1.JPG
Affichages : 334
Taille : 12,5 Ko

    Pourtant j'ai recopié exactement la syntaxe trouvé sur un tutoriel

    Là je suis bloqué :(

  7. #7
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    J'ai prévenu que ça ne serait pas simple. Là il faut un set analysis qui tienne compte des valeurs sélectionnées ET qui force la marée, donc plus du genre capteur = P(Capteur) + {'Marée'}

    Pouvez-vous poster un échantillon de votre application pour voir ? Je ne suis même pas sûr que ma solution soit possible, ça dépend de votre modèle de données.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  8. #8
    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 nuke_y

    Ci joint l'image du modèle
    Nom : Capture2.JPG
Affichages : 410
Taille : 16,8 Ko
    Les capteurs sont renseignés par la table Piezo Info
    La marée est intégrée à la table Capteur et ne possède pas d'info dans la table PiezoInfo

    Date permet de renseigner l'axe des abscisses
    Année, mois, Jour permettent de filtrer l'axe des abscisses
    Capteur permet de filtrer les courbes à afficher dont la marée

    Mon graphe a pour:
    - dimensions Date et Capteur
    - expression Niveau je pense que c'est là qu'il faut mettre un set imbriqué

    Pour aller pas à pas je voudrais comprendre pourquoi Qulikview renvoi une erreur lorsque je tape
    Nom : Capture1.JPG
Affichages : 427
Taille : 12,5 Ko
    dans l'expression du graphe

    Si je passe cette étape je devrais pour combiner avec un set pour les capteurs sur la selection active.

    Merci

  9. #9
    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
    Citation Envoyé par PhilemonCub Voir le message
    Pour aller pas à pas je voudrais comprendre pourquoi Qulikview renvoi une erreur lorsque je tape
    Nom : Capture1.JPG
Affichages : 427
Taille : 12,5 Ko
    dans l'expression du graphe
    Parce que le parser de QlikView est mauvais et qu'il se perd dès que la syntaxe n'est pas exactement celle attendue.
    Et quand on fait des intersections d'univers, là, il est complètement perdu... Mais ça fonctionne quand même !


    Ici, c'est le "*" qui le perd, car il s'attend a avoir une chaine de caractère.
    sera plus parser-friendly.


    Par contre, on est d'accord que la capture d'écran n'est pas l'expression complète, mais juste la partie "Set Analysis" de l'expression ?

  10. #10
    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 mis au niveau de l'expression du graphe {<Niveau = {'*'}, Capteur={"Marée"} >} mais ça change rien : "error in expression"


    Par contre, on est d'accord que la capture d'écran n'est pas l'expression complète, mais juste la partie "Set Analysis" de l'expression ?


    Non c'est l'expression, j'ai vu dans un tuto que l'on pouvait avoir uniquement un Modificateur pour élargir une sélection.
    Etant debutant, je n'ai pas encore saisi les subtilités du set analysis.

    Merci

  11. #11
    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
    Alors effectivement, un Set Analysis tout seul, ça ne va pas bien fonctionner.

    Dans une expression, il faut mettre une mesure, composée généralement de :
    - une fonction d'agrégation (sum, count, only, ...)
    - un champ de mesure (présent dans le modèle de données)

    C'est dans la fonction d'agrégation qu'on peut ajouter un Set Analysis, qui permet de modifier le périmètre analysé (qui par défaut est "la sélection courante").

  12. #12
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Une explication succinte du set analysis : http://www.developpez.net/forums/d15...e/#post8539663
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  13. #13
    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,

    Bon j'abandonne pas.

    Après avoir lu les différents forums auxquels vous m'avez renvoyé, je suis tombé sur
    http://www.developpez.net/forums/d13...-d-agregation/
    et m'en suis inspiré

    J'ai écris dans l'expression du graphe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aggr(only({$ <Localisation= {"*"}, Capteur={"marée"}>} Niveau), Niveau)
    Que je traduit par:
    Toutes les sélections en cours, Toutes les localisations, pour le capteur "Marée"

    L'expression est ok, au moins il n'y a pas d'erreur de syntaxe
    Des courbes s'affichent... mais pour tous les capteurs sélectionnés et dès que je sélectionne une localisation plus rien.

    2 problèmes:
    Certains posts indiquent que pour ignorer un critère il faut écrire <Localisation=> d'autres que cette écriture indique toutes les localisations.
    Comme Marée n'a pas de Localisation, il faudrait exclure ce critère ce qui n'est pas la même chose que choisir toutes les localisations... enfin je crois.

    Pourquoi Toutes les courbes s'affichent alors que j'ai restreint à Capteur="marée"

    Merci

  14. #14
    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
    Est-ce qu'il y a bien un seul "Niveau" par capteur / date ?

    Si oui, l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    only({$ <Localisation= {"*"}, Capteur={"marée"}>} Niveau)
    suffit (pas besoin d'une agrégation supplémentaire).

    Certains posts indiquent que pour ignorer un critère il faut écrire <Localisation=> d'autres que cette écriture indique toutes les localisations.
    "Ignorer un critère", cela veut dire "faire comme s'il n'y avait aucune sélection faite sur ce champ par l'utilisateur" et donc implique "toutes les valeurs possibles".

  15. #15
    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
    PhunkyBob

    Je vais tester votre proposition.

    Je teste une autre voie qui me semble plus simple.
    J'ai ajouté une propriété '--' dans la table PiezoInfo pour Marée à tous les champs de façon à ce qu'ils soit sélectionnables dans les listes Localisation,...

    Cela fonctionne mais je souhaiterai sélectionner automatiquement les '--' des différentes listes dès que je clique dans Capteur="Marée" en plus des sélections existantes.
    Actuellement je passe par un bouton avec une succession d'action "sélectionner dans le champ" ... '--' mais qui me désélectionne les autres critères des listes.

    Je ne vois pas où dans les propriétés de la liste Capteur mettre une condition pour sélectionner dans les autres listes les '--' en plus des sélections actives et éviter ainsi le bouton.

    Merci

  16. #16
    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
    Le plus simple serait que vous donniez un jeu de données (quelques lignes avec un LOAD INLINE) pour comprendre comment sont vos données, et que vous nous expliquiez, selon ce jeu de données, ce que vous attendez.


    Dans un Set Analysis, vous pouvez utiliser l'opérateur "+" pour ajouter une valeur à la sélection courante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <Année+={2016}>} ventes)
    va afficher les ventes de toutes les années sélectionnées ainsi que celles de l'année 2016 (même si l'Année "2016" n'est pas sélectionnée).

  17. #17
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Citation Envoyé par nuke_y Voir le message
    [...] La meilleure solution, à mon avis, c'est d'ajouter la marée comme si c'était un capteur comme un autre puis de bidouiller en set analysis pour qu'elle s'affiche tout le temps. Avec un set du genre : capteur = P(Capteur) + {'Marée'}
    C'est ce que j'ai proposé au début de la conversation. Visiblement vous ne savez pas comment le faire, donc si vous pouviez nous passer un échantillon de votre application nous pourrions vous montrer comment faire, et ça vous permettrait d'apprendre une nouvelle technique en la voyant fonctionner plutôt que de rester bloquer.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  18. #18
    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,

    Ca y est j'y suis arrivé

    J'ai mis la marée et mes capteurs dans une même table
    J'ai ajouté des propriétés du type "--" dans la table PiezoInfo pour la marée
    J'ai créé un bouton avec une succession d'actions "Selectionner dans le champs"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ='("' & concat({$} [Champs de la Table Piezo Info],'"|"') & '"|--")'
    Ce qui permet de choisir instantanement tous les "--" des différentes listes associées à Marée et de les ajouter à la selection active

    J'ai vu que l'on pouvait mettre des déclencheurs, je verrais plus tard si je peux ainsi supprimer le bouton dès que je sélectionne le capteur Marée.

    Merci pour vos conseils et les posts sur le set analysis.

    Plus que 2 problèmes à résoudre et c'est terminé ... J'ajoute un post.

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

Discussions similaires

  1. autoscale d'un graphique avec courbes de différents ordre de grandeur
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 28/06/2010, 14h04
  2. [XL-2007] Graphique avec plusieurs types de courbes
    Par qltmi dans le forum Excel
    Réponses: 4
    Dernier message: 20/04/2010, 21h14
  3. [XL-2003] Graphique avec 2 courbes et 1 histogramme
    Par tranzebou dans le forum Excel
    Réponses: 16
    Dernier message: 30/10/2009, 18h27
  4. Réponses: 2
    Dernier message: 23/03/2009, 14h06
  5. Graphique avec une courbe et deux axes
    Par GriffinK dans le forum VB.NET
    Réponses: 12
    Dernier message: 07/05/2008, 11h02

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