Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

if dans un load

Bonjour.

Je ne parviens pas a utiliser correctement un if dans un script load.


Load

  *,

  Date(Date#($(CreationDate_Source), 'YYYY-MM-DD'), 'DD/MM/YYYY') as $(CreationDate_Field),

  Date(Date#($(ExitDate_Source), 'YYYY-MM-DD'), 'DD/MM/YYYY') as $(ExitDate_Field),

  if ($(NetWorkDay) = 1,

  if (NetWorkDays(Date(Date#($(CreationDate_Source), 'YYYY-MM-DD'), 'DD/MM/YYYY'), Date(Date#($(ExitDate_Field), 'YYYY-MM-DD'), 'DD/MM/YYYY'))-1<0,

    0,

    NetWorkDays(Date(Date#($(CreationDate_Source), 'YYYY-MM-DD'), 'DD/MM/YYYY'), Date(Date#($(ExitDate_Field), 'YYYY-MM-DD'), 'DD/MM/YYYY'))-1) as [Délai ouvré],

    )

  $(ExitDate_Source)-$(CreationDate_Source) as [Délai de traitement];

Je voudrais que mon champ [Délai ouvré] ne soit calculé que si ma variable $(NetWorkDay)  = 1.



J'espère être suffisamment clair.



Cordialement,

15 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

Non

Not applicable
Author

Ok. Merci a vous deux.

lcloatre
Partner - Creator III
Partner - Creator III

Non, ce n'est pas possible. Une table est constituée de champs qui sont ou ne sont pas alimentés selon les occurences. Dans ton cas, seules les occurences dont la variable NetWorkDay est égale à 1 auront une valeur.

sfatoux72
Partner - Specialist
Partner - Specialist

Salut, c'est possible de faire ce que tu veux, mais pas de cette manière.

Il faut utiliser le if 'contrôle de script' et pas le if 'fonction'. --> Voir lien

https://help.qlik.com/fr-FR/qlikview/12.1/Subsystems/Client/Content/Scripting/ScriptControlStatement...

IF $(NetWorkDay) = 1 THEN

     // Ton LOAD avec ton champ

     ...

ELSE

    // Ton LOAD sans ton champ

    ...

END IF

Not applicable
Author

Oui j'ai fini par faire ça mais c'est ce que je voulais éviter. Ce n'est pas très joli cette duplication de code.

sfatoux72
Partner - Specialist
Partner - Specialist

Si tu ne veux pas dupliquer, tu peux faire la chose suivante:

// Ton LOAD sans ton champ

...

IF $(NetWorkDay) = 1 THEN

    Left Join (ta table)

    // Ton LOAD avec uniquement les champs clé pour la jointure et ton champ "Délai ouvré"

    ...

END IF