Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Utilisation des set analysis

Bonjour,

j'ai une table que je charge avec ce srcipt:

devises:

LOAD

  CUDIVI as %DIVI,

  CUCUCD as Code_devise,

  date#(CUCUTD,'YYYYMMDD') as DateValidité_Devise,

  CUARAT as Taux_devise

FROM CCURRA.QVD (qvd)

WHERE

  CUCRTP=4

;

Il y en gros ces données là dedans:

Select '1Z0', 'USD', '2015-01-01 00:00:00.000', 1.30

UNION ALL Select '1Z0', 'USD', '2015-02-01 00:00:00.000', 1.20

UNION ALL Select '1Z0', 'USD', '2015-03-01 00:00:00.000', 1.10

UNION ALL Select '1Z0', 'USD', '2015-04-01 00:00:00.000', 1.00

UNION ALL Select '1Z0', 'GBP', '2015-01-01 00:00:00.000', 0.9

UNION ALL Select '1Z0', 'GBP', '2015-03-01 00:00:00.000', 0.95

UNION ALL Select 'AAA', 'USD', '2015-01-01 00:00:00.000', 1.00

Donc:

- un identifiant %DIVI

- un code devise Code_devise

- une date de début DateValidité_Devise

- un taux Taux_devise

Je cherche à obtenir pour une date donnée le taux à appliquer pour un identifiant et un code devise .

Pour une date donnée "DATE_REF" j'arrive à trouver la date du taux à appliquer via cette expression:

MAX (total<%DIVI,[Code devise]>

  if(

   DateValidité_Devise<DATE_REF,DateValidité_Devise

  )

)

J'aimerais donc filtrer uniquement les lignes les lignes ayant DateValidité_Devise = à ce MAX.

J'ai tenté les expressions suivantes:

     Pour la date de validité

=if(

isnull(only(total<%DIVI,[Code devise]> if(DateValidité_Devise=DATE_REF,true()))),

MAX (total<%DIVI,[Code devise]>

  if(

   DateValidité_Devise<DATE_REF,DateValidité_Devise

  )

)  

)

     Pour le taux

=if(

isnull(only(total<%DIVI,[Code devise]> if(DateValidité_Devise=DATE_REF,true()))),

ONLY(AGGR(

  IF(DateValidité_Devise=

   MAX (total<%DIVI,[Code devise]>

    if(

     DateValidité_Devise<DATE_REF,DateValidité_Devise

    )

   )

  ,[Taux devise]

  )

,DateValidité_Devise,%DIVI,[Code devise])

)

)

Ca fonctionne sauf quand la date DATE_REF est égale à la date de début d'une période.

Je n'ai rien qui apparaît dans les 2 expressions à ce moment là

Merci,

Willy

0 Replies