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 :

[Selection Tableau] Année - Mois - Semaine


Sujet :

QlikView

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut [Selection Tableau] Année - Mois - Semaine
    Bonjour,

    Je me tourne vers vous car je rencontre des problèmes sur Qlikview que je découvre notamment sur la gestion de date.
    Je recherche a faire un comparatif sur deux tables dans un tableau pour le moment sur des quantités facturées et des prévisions.
    Voici mes tables liées :

    Nom : Prevision.jpg
Affichages : 865
Taille : 35,9 Ko

    La problématique est que je souhaite faire une sélection sur un champ année combiné ou non a un champs mois et semaine pour mettre a jours mes tableaux.
    Je n'arrive pas a visualiser car dans ma tête j'imagine une table temporaire avec la liste de tous les jours sur une période donnée.
    Du coup, cela pourrais me permettre de relié ma date de prévision avec ma date de facturation. Or mes deux tables sont reliées avec le champ _ArticlePrévision ce qui provoque "une boucle"

    Je pense que j'ai encore un peu de mal avec les concept de Qlikview

    Merci d’éclairer ma petite lumière.

  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,

    Vous avez 2 solutions pour comparer Réalisé vs. Prévisions avec un filtre sur les dates.

    Solution 1 : calendrier détaché du modèle
    Cette solution consiste à charger une table "Calendrier" qui n'est pas liée à vos tables de données, mais qui contient toutes les dates possibles (qui vous intéressent).
    Dans votre application, vos sélecteurs de date seront sur cette table de Calendrier.
    Forcément, les sélections dessus n'auront pas d'effet sur vos expressions, il faudra donc les modifier pour qu'un lien soit fait directement dans les formules.

    Si dans une zone de texte vous aviez une expression
    qui changeait en fonction de la sélection "VTE Date facturation", il faut alors écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(if([VTE Date facturation] = Calendrier_date, [VTE quantité]))
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <[VTE Date facturation]=P(Calendrier_date)>} [VTE quantité])
    qui changera en fonction de la sélection "Calendrier_date" qui fait partie de votre table de calendrier détachée du modèle.


    Solution 2 : table creuse
    Cette solution consiste à mettre tous les faits dans 1 seule et même table.
    Les champs en commun étant remplis, les champs spécifiques pas forcément. Le fait que certaines colonnes ne soient pas remplies crée des "trous". Or dans QlikView, on peut se permettre d'avoir des "trous", car ceux ci n'ont pas de poids ou d'impact sur les calculs.

    Ainsi, vous vous retrouverez avec une seule tables qui aura les champs :
    Date
    Année
    Mois
    Semaine
    Article
    VTE Quantité
    PRV Quantité manuelle
    PRV Quantité auto
    PRV Quantité totale

    Vous pourrez donc utiliser les champs "Année / Mois / Semaine / Date" pour faire vos filtres qui auront un effet sur les VTE et les PRV.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup pour cette réponse.

    J'avais envisagé la deuxième solution au début mais après coup je me suis dit que regrouper toutes les données vente c'est cohérent.
    Par contre, si je veux en même temps croiser des données achats alors ca va devenir du grand n'importe quoi.

    Je vais partir du coup sur la table calendrier et je vais inclure dans les formules les conditions.
    D'ailleurs je comprends très bien la formule avec le IF mais la deuxième avec le "P(Calendrier_date)".
    Pourrais tu m'éclairer sur cette syntaxe ?

  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
    Citation Envoyé par Chuppas Voir le message
    Par contre, si je veux en même temps croiser des données achats alors ca va devenir du grand n'importe quoi.
    C'est pourtant la façon la plus simple à mettre en place, et très efficace.

    Citation Envoyé par Chuppas Voir le message
    D'ailleurs je comprends très bien la formule avec le IF mais la deuxième avec le "P(Calendrier_date)".
    Pourrais tu m'éclairer sur cette syntaxe ?
    Pour filtrer les données dans une expression, il y a 2 façons de faire :
    - Avec un "if" qui fait que pour chaque ligne, le système va regarder si la condition est respectée.
    - Avec un Set Analysis (analyse d'ensemble), qui permet d'appliquer un filtre comme s'il avait été fait avec des listes de sélection.

    Le Set Analysis permet de :
    - se baser sur la sélection courante / aucune sélection / la sélection précédente / un bookmark / ...
    - ajouter ou supprimer des sélections sur un ou plusieurs champs

    Ca a l'avantage d'être beaucoup plus performant car le filtre est effectué avant le calcul (puissance du modèle vectoriel de QlikView).

    Pour résumer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <MonChamp={'une valeur'}>} Valeur)
    Fera la somme des "Valeur" avec la sélection courante, sauf pour le champ "MonChamp" où ça fera comme si la sélection courante est "une valeur".
    C'est l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(if(MonChamp = 'une valeur', Valeur))
    mais en plus performant.

    La fonction "P()" permet de dire "toutes les valeurs possibles".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <[VTE Date facturation]=P(Calendrier_date)>} [VTE quantité])
    signifie donc "la somme des VTE, avec la sélection courante, sauf pour le filtre "Date facturation" où là, on va faire comme si les valeurs sélectionnées pour ce champ sont "toutes les valeurs actuellement possibles de la dimension Calendrier_date"".


    Vous pouvez regarder le chapitre "analyse d'ensemble" de la documentation pour plus d'informations.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci pour ces explications claires et précises.

    Après quelques pratiques, je vais partir sur la table creuse au finale.

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

Discussions similaires

  1. [XL-2013] somme.si.ens selection uniquement sur mois et année
    Par rehugg dans le forum Excel
    Réponses: 3
    Dernier message: 11/10/2014, 18h33
  2. [AC-2007] Select Case MsgBox : Mois qui corresponde a l'année
    Par Bernard67 dans le forum VBA Access
    Réponses: 6
    Dernier message: 19/10/2011, 09h06
  3. Help ! Créer un tableau selon mois et années
    Par brisefer dans le forum Langage
    Réponses: 0
    Dernier message: 03/08/2010, 09h38
  4. [Dates] numéro année + numéro semaine
    Par auduma dans le forum Langage
    Réponses: 3
    Dernier message: 10/01/2006, 11h58
  5. Réponses: 4
    Dernier message: 28/07/2005, 10h45

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