2 Replies Latest reply: Jan 23, 2018 1:38 AM by Sébastien Fatoux RSS

    Créer une liste de valeurs calculées

    Elina Demerdjieva

      Bonjour,

       

      Je cherche à créer un filtre dans un rapport dont les valeurs seront calculées par rapport à des données existantes dans QlikView. Voici un exemple:

       

      Objectif: lister dans un tableau les émissions et les utilisations de cartes cadeau dans une boutique.

       

      Valeurs du filtre "Statut carte cadeau":

      - active (date d'émission + validité <= aujourd'hui)

      - expirée avec solde positif (date d'émission + validité > aujorud'hui) et solde > 0

      - expirée avec solde négatif (date d'émission + validité > aujorud'hui) et solde < 0


      Dans le modèle j'ai les données suivantes:

      - date d'émission

      - validité (en nombre de jours)

      - montant initial

      - solde


      J'ai pensé à la fonction ValueList mais je ne trouve pas le moyen de l'utiliser.


      Toutes les idées sont les bienvenues .


      Par avance merci.

        • Re: Créer une liste de valeurs calculées
          bruno bertels

          Bonjour

           

          Oui c'est possible

           

          Peut être quelque chose comme çà :

           

          A adapter et tester en le rajoutant dans ton script

           

          [Table]:
          LOAD
          [date d'émission],
          [validite],
          [montant initial],
          [solde],
              If(date("date d'émission" + "validite" ,'DD/MM/YYY') <=today() , 'active' ,
          if(date("date d'émission" +"validite" ,'DD/MM/YYY') >  today() AND solde > '0', 'expirée avec solde positif',
          if(date("date d'émission" + "validite" ,'DD/MM/YYY') >  today() AND solde < '0' , 'expirée avec solde négatif'))) as Statut;

          Table1:
          LOAD
          * INLINE
          [
          date d'émission,validite,montant initial,solde
          01/02/2017,365,10,5
          01/01/2017,365,15,5
          10/02/2017,365,20,-5
          ](delimiter is ',');

           

          Ensuite tu peux faire des count(Statut) , créer des filtres etc



          Capture.PNG

           

          Bruno

            • Re: Créer une liste de valeurs calculées
              Sébastien Fatoux

              Hello,

               

              Le statut n’ai pas défini lorsque la date est expirée et que le solde est à zéro.

               

              J’ai repris l’expression If de Bruno que j’ai modifié comme suit :

              • Ajout du statut 'expirée sans solde' si expirée et solde = 0
              • Simplification de l’écriture pour améliorer la performance et la lisibilité
                • <= est un test de comparaison numérique, on utilise donc la valeur numérique de la date. Il n’est donc pas nécessaire de formater la date.
                • les If étant imbriqués, il est inutile de re-tester les dates dans le 2ème et 3ème If, on est forcément 'expirée'
                • pourquoi comparer [solde] avec la chaîne de caractère '0' ? Il faut la comparer directement avec la valeur numérique 0, afin d’éviter des conversions inutile

               

               

              If(([date d'émission]+[validite]) <= today(),

                  'active',

                  if(solde > 0,

                        'expirée avec solde positif',

                        If(solde < 0,

                            'expirée avec solde négatif',

                            'expirée sans solde'

                        )

                  )

              ) as Statut