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 :

Affichage des "manquants"


Sujet :

QlikView

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Affichage des "manquants"
    Bonjour,

    Dans Qlikview, lorsqu'on a lié deux tables par un champ commun, comment afficher la liste des entrées de ce champ ne figurant pas dans l'autre table ?

    Par exemple:

    TABLE A =
    Code Libellé
    1 riri
    2 fifi
    3 loulou


    TABLE B =
    Code Libellé
    1 riri
    2 fifi
    3 loulou
    4 picsou
    5 Donald


    J'aimerai avoir une petite liste dans Qlikview qui ne contiendrait que "picsou" et "donald" ... ?

    J'ai essayé en configurant des listes de sélection, mais je n'ai pas réussi .... pourtant ça doit être très simple (smiley face-palm)
    Quelqu'un pour m'aider s'il vous plaît ?

    Merci par avance,

  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,

    Je ne suis pas certain de comprendre comment est fait votre modèle.
    Comme vous l'exprimez, il n'y a qu'1 seule table dans QV car vos 2 champs ont le même nom.
    Dans ce cas là, il est impossible de sortir les 2 valeurs que vous souhaitez, sans passer par le script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    TABLE_A:
    LOAD * INLINE [
    Code, Libellé
    1, riri
    2, fifi
    3, loulou
    ];
     
     
    CONCATENATE (TABLE_A) 
    LOAD *,
    if(not Exists(Code), 1) AS In_B_not_in_A
    ;
    TABLE_B:
    LOAD * INLINE [
    Code, Libellé
    1, riri
    2, fifi
    3, loulou
    4, picsou
    5, Donald
    ];
    Il suffira de filtrer sur les lignes qui ont "1" dans le champ "In_B_not_in_A".

    Si vos tables sont liées uniquement par le "Code" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    TABLE_A:
    LOAD * INLINE [
    Code, Libellé
    1, riri
    2, fifi
    3, loulou
    ];
     
     
    TABLE_B:
    LOAD * INLINE [
    Code, Libellé_2
    1, riri
    2, fifi
    3, loulou
    4, picsou
    5, Donald
    ];
    Vous pouvez faire un tableau avec comme dimension "Code" et comme expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(len(Libellé) <= 0, 'only in B')
    Si vous avez un champ "Code" séparé, mais qui contient la même valeur d'identifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    TABLE_A:
    LOAD * INLINE [
    Code.A, Libellé.A
    1, riri
    2, fifi
    3, loulou
    ];
     
     
    TABLE_B:
    LOAD * INLINE [
    Code.B, Libellé.B
    1, riri
    2, fifi
    3, loulou
    4, picsou
    5, Donald
    ];

    , vous pouvez faire un tableau avec "Code.B" comme dimension et comme expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count({$ <Code.B-=P(Code.A)>} Code.B)
    qui enlèvera de B toutes les valeurs possibles de A.

    Vous pouvez aussi créer une liste de sélection qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =aggr(only({$ <Code.B-=P(Code.A)>} Libellé.B), Code.B)

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Déjà, merci beaucoup pour cette réponse.
    En tant que novice, j'y découvre de nouvelles possibilités/idées.

    Je me rends compte également du manque de précisions dans mon premier message, et j'en suis désolé.
    Aussi, j'ai créé un exemple simplifié au possible pour partir sur un cas vraiment concret.

    Ci-dessous le script d'importation :

    Directory;
    TABLE_A:
    LOAD Code,
    Nom
    FROM
    [Table A.xls]
    (biff, embedded labels, table is [Feuil1$]);


    Directory;
    Table_B:
    LOAD Bataille,
    Code,
    Victoire
    FROM
    [Table B.xls]
    (biff, embedded labels, table is [Feuil1$]);


    Les tables A et B sont automatiquement liées par le 'Code', ce qui donne l'architecture simplissime suivante :
    https://zupimages.net/up/18/40/le3n.png

    Et pour ma demande initiale, il s'agirait d'obtenir hors script, une liste (liste de sélection, ou peu importe) des codes figurants dans la table B et qui ne figureraient pas dans la table A.
    A savoir : 4 et 5


    J'espère que mes précisions pourront vous être utiles si toutefois vous aviez l’amabilité de m'aider à nouveau pour cet exemple concret.
    Merci par avance et bonne journée à vous,

  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
    Vous êtes donc dans le cas 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(len(Nom) <= 0, 'only in B')

  5. #5
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Tout à fait !
    J'avais réussi à faire quelque chose de similaire suite à votre première réponse, le problème étant que je ne parviens pas à masquer les 1, 2, et 3 à l'affichage pour ne conserver que les valeurs 4 et 5 comme dans l'encadré vert ci-dessous ...

    https://zupimages.net/up/18/40/16l5.png

    Ou alors peut-être que j'ai zappé une option dans les propriétés des listes de sélection ?? (smiley se grattant la tête)

  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
    C'est parce que vous utilisez une liste de sélection et pas un tableau.

    Pour une liste de sélection, il faut aller tout en bas de la liste des champs pour sélectionner "Expression...", et mettre comme expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =if(len(Nom) <= 0, Bataille)

  7. #7
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bingo !

    https://zupimages.net/up/18/40/4ocg.png

    J'ai créé un "tableau simple" dans la rubrique "Graphique", et ça a fonctionné avec la formule initiale.
    Un grand merci pour cet aide précieuse qui me permet de me familiariser davantage avec les possibilités de cet outil.

    Bonne journée à vous

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

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