Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
edemerdjieva
Partner - Creator
Partner - Creator

Créer une liste de valeurs calculées

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.

Labels (1)
2 Replies
brunobertels
Master
Master

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

sfatoux72
Partner - Specialist
Partner - Specialist

‌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