3 Replies Latest reply: Dec 17, 2014 6:54 AM by Martial SERON RSS

    Problème where exists()

    Martial SERON

      Bonjour,

       

      Je ne comprend pas le fonctionnement de la fonction exists().

      Je ne veux charger les données de Escalades que pour les tickets chargés dans Tickets.

      En me basant sur la doc, j'ai fais ceci :

       

      Tickets:
      LOAD
        id as [Numéro de ticket],
      .....
      FROM tickets.qvd (qvd)
      WHERE id >= 1410010000;
      
      Escalades:
      LOAD tickets_id as [Numéro de ticket],
      ...
      FROM  escalades.qvd (qvd)
      WHERE Exists(tickets_id, [Numéro de ticket]);
      

       

      J'ai le message d'erreur

       

      Champ introuvable - <Numéro de ticket>

      Quelle est la bonne utilisation de exists() ?

       

      MS

        • Re: Problème where exists()
          Ulrich COUEGNOUX

          Bonjour

           

          J'utilise très souvent cette fonction, mais avec une requête SQL ensuite, il faudra peut être adapter le script.

          Elle doit être placée dans le LOAD, et la valeur de la table référente entre parenthèse.

          Il faudra certainement - à confirmer par d'autres utilisateurs - renommer le champ 'id' de la table Tickets, en tickets_id, qui est stocké dans le QVD

           

          ce qui donnerait :

          Tickets: 

          LOAD 

            tickets_id as [Numéro de ticket], 

          ..... 

          FROM tickets.qvd (qvd) 

          WHERE id >= 1410010000;


          Escalade:

          LOAD tickets_id as [Numéro de ticket],

               Where exists(tickets_id)

          FROM  escalades.qvd (qvd);



          • Re: Problème where exists()

            Bonjour Martial,

             

            Je pense que ton probleme provient du fait que tu cherches a utiliser la fonction Exists() en utilisant le champ precedemment charge dans la table Tickets, si je ne me trompe pas. Cela ne fonctionne evidemment pas.

            D'autre part tu definis [Numero de Ticket] dans ta fonction. Qlikview pourra trouver tickets_id qui vient de la meme table, mais pas le champ renomme.

             

            Quoiqu'il en soit je pense que tu peux realiser ce que tu veux en creant un Left Join entre tes deux tables. De cette maniere tu joindras ta deuxieme table a la premiere et tu limiteras les values a celles existant dans la premiere.

             

            J'espere que c'est clair et que ca t'aidera.

             

            Jon

            • Re: Problème where exists()
              Martial SERON

              Ma façon d'utiliser exists() vous a mal orienté sur ce que je voulais faire.

              Cela m'a forcé à relire la doc et j'ai compris que je l'utilisais à l'envers.

               

              Exists(A, B) est en fait : recherche toutes les valeurs possibles de B (table actuelle) dans A (autre table qui est déjà chargée).

               

              Soit pour mon cas Exists([Numéro de ticket], tickets_id);

               

              Et à première vue, ça fonctionne très bien.

               

              Merci à vous