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 :

Stocker une valeur en variable pour utiliser en SET ANALYSIS


Sujet :

QlikView

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Stocker une valeur en variable pour utiliser en SET ANALYSIS
    Bonjour,

    Voici ma problématique :

    J’ai une table article et une table vente qui sont reliées par le champ « N° »

    ARTICLE
    N° Rayon Famille
    1 A AA
    2 A AA
    3 A AB
    4 B BA
    5 B BB

    VENTES
    N° Quantité Montant
    1 2 30
    1 2 30
    2 2 30
    2 2 30
    3 2 30


    Je voudrais pouvoir, lorsque j’ai une sélection active sur l’article N° = 1, avoir un tableau (ou un graphique) ou je pourrais faire un cumul des quantités de tous les articles possédant la même famille que mon produit présent dans ma sélection active.

    Donc après avoir sélectionner l'article N° 1 dans ma sélection active, avoir les tableaux suivants (ça je sais faire) :

    ARTICLE
    N° Rayon Famille
    1 A AA

    Ventes
    N° Quantité Montant
    1 2 30
    1 2 30

    Mais aussi un autre tableau :

    Ventes
    N° Quantité Montant
    1 2 30
    1 2 30
    2 2 30
    2 2 30

    En cherchant sur le net j’ai vu que je pourrais arriver à obtenir des résultats avec la fonction SET ANALYSIS de type {1} (me permettra de ne pas tenir compte de la sélection active sur le N° article), mais je n’arrive pas à voir comment je peux récupérer (stocker en variable?) l’information de la valeur de ma famille , alors que ma sélection active se porte sur un N° article.

    J’espère être assez clair, il me semble qu’il n’y a rien d’infaisable mais une notion que je ne maîtrise pas.

    Merci beaucoup.

  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,

    donne la somme des montants.

    C'est équivalent à (sélection active).

    On veut supprimer le filtre sur le numéro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <[N°]=>} Montant)
    Ainsi, quand on sélectionne un numéro, ce filtre n'est pas pris en compte.

    Mais on veut ajouter un filtre sur la famille, pour qu'elle prenne les valeurs possibles selon la sélection actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <[N°]=, Famille=P({$} Famille)>} Montant)
    (la fonction "P(...)" veut dire "les valeurs possibles)

    On peut simplifier en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <[N°]=, Famille=P(Famille)>} Montant)

    Si on fait un tableau avec comme dimension "N°", on obtient

    N° Quantité Montant
    1 4 60
    2 4 60


    Pour avoir le détail des ventes, il faut impérativement qu'elles aient un identifiant, que l'on peut rajouter au chargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    VENTES:
    LOAD *, recno() AS ID_Vente;
    LOAD * INLINE [
    N°, Quantité, Montant
    1, 2, 30
    1, 2, 30
    2, 2, 30
    2, 2, 30
    3, 2, 30
    ];
    On mettra ainsi comme dimension "ID_Vente" et "N°".


    ID_Vente N° Quantité Montant
    1 1 2 30
    2 1 2 30
    3 2 2 30
    4 2 2 30

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Bonjour PhunkyBob,

    Alors comment dire.... Merci C'est exactement ça, explication très claire et découverte d'une nouvelle fonction P() qui m'a été très utile pour avancer sur mon projet.

    Je vais abuser un peu, mais découvrant au fur et à mesure la puissance de l'outil, je me retrouve confronté à de nouvelles problématiques en poussant encore plus loin l'analyse.

    1°) J'ai donc pu créer mon tableau, indépendant de mes sélections actives, mais filtré sur une valeur inhérente à ma sélection active.
    Toutes mes expressions calculées apparaissent correctement, en revanche je n'arrive pas à afficher du texte (ma désignation article dans mon cas de figure). La désignation apparaît uniquement sur l'article faisant partie de la sélection active.

    Formule d'une expression calculée qui marche correctement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num(((sum({$<[N° article]=,[Libellé sous-famille]=P([Libellé sous-famille])>}[Quantité avoir]))/sum({$<[N° article]=,[Libellé sous-famille]=P([Libellé sous-famille])>}[Quantité à facturer])),'# ##0.00%')
    Formule d'une expression calculée que je n'arrive pas à faire fonctionner (logique je n'arrive pas à rajouter le set analysis):
    2°) Formule un peu plus complexe dans laquelle je n'arrive pas à intégrer mon set analysis et mon filtre précédent. La formule marche parfaitement (elle n'est peut être pas optimisée, mais elle donne le résultat attendue).
    C'est une formule permettant de déterminer la date de prochaine rupture de mon produit en fonction des prochaines dates de réception, quantité et de mes ventes moyennes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =date(date(today()+num((([Quantité disponible])+[Encours achats confirmés])/(((sum([Quantité à facturer])+[Qté RAL cdes client totale])/((today()-[Date première réception])))),'# ##0.'))
    -num(avg(if([Code magasin]='TOTO',null(),([Date de rangement]-[Date commande achat]))),'# ##0.'))
    Comme pour le point 1, la valeur apparaît bien sur la ligne correspondant à la sélection active, mais pas sur les autres lignes (logique je n'ai pas intégré mon set analysis dans l'expression...)

    Ce sont surement des questions de débutants, j'essaye d'avancer un maximum tout seul (et avec votre aide) en attendant ma formation...

    Merci beaucoup, je vous souhaite une bonne journée

  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
    1° : la fonction "text" sert à convertir quelque chose en texte.

    Ce que vous cherchez, c'est la fonction "only()" qui permet de retourner la valeur correspondante si elle est unique.
    "only()" accepte les Set Analysis.

  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
    2° Dans cette formule, je ne vois aucune Set Analysis, alors qu'il devrait y en avoir à toutes les fonctions d'agrégation.

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/07/2011, 09h59
  2. convertir la valeur dune variable pour appeler une method.
    Par speed034 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 06/06/2011, 11h08
  3. Réponses: 3
    Dernier message: 20/01/2010, 10h47
  4. [AC-2000] Mémoriser une variable pour utilisation dans plusieurs procédures
    Par P'tit aviateur dans le forum VBA Access
    Réponses: 6
    Dernier message: 03/07/2009, 10h49
  5. stocker une valeur dans une variable de session
    Par heeedi dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2009, 08h46

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