Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Syntax error in set analysis ?

Hello everyone,

I am trying to calculate the number of members at a time T, ie the same day.
I use the following expression that brings me nothing. Yet phrase ok.
I think it's a question of union or intersection ...

=count({$<LIAISON_POLICE_DTAFFIL={"<=Today()"},LIAISON_POLICE_DTRADIAT={">=Today()"},ADHERENT_DTSORTIE={">=Today()"}>}ADHERENT_NOUNIQUE)

Anyone have any idea?

Thank you in advance,

Emmanuelle

Labels (1)
1 Solution

Accepted Solutions
cje
Employee
Employee

Bonjour,

Plusieurs remarques :

- Un champ date n’existe pas dans QlikView. Il s’agit en fait d’un « dual » composé d’un nombre et d’une représentation formatée. Au chargement, s’il s’agit d’un nombre simple, QlikView le formate en utilisant la représentation par défaut (exemple, si on charge 123.54, QlikView va vous proposer une représentation décimale). S’il s’agit d’une représentation formatée comme une date (exemple 16/12/2013), QlikView va essayer de l’interpréter en tant que tel. Si l’interprétation est validée, QlikView va créer ce fameux dual en transformant la chaine de date en nombre puis en vous proposant la représentation par défaut à l’affichage sous la forme d’une date (exemple, 16/12/2013 devient 41624 mais est affiché comme 16/12/2013). Si l’interprétation est invalide, QlikView va le laisser tel quel et l’utiliser comme une chaine de caractères. On peut s’en rendre compte très simplement en utilisant les objets listes dans l’interface. Si la liste contient des dates valides, allez dans les propriétés de la liste, dans l’onglet Nombre, changez la représentation par défaut et passez sur un entier. Vous allez voir apparaitre le nombre du dual sous-jacent à la date.

- Quand on utilise une fonction telle que today() dans un SET ANALYSIS, il faut dire à QlikView d’évaluer le résultat de cette fonction avant de l’appliquer à la sélection du SET ANALYSIS. Pour ce faire, on doit employer la syntaxe générale suivante qui inclut l’opérateur $ permettant de faire l’évaluation :

o FONCTION_AGREGAT ( { < CHAMP = { $(=EXPRESSION_A_EVALUER) } > } INDICATEUR )

- Il faut en plus récupérer la valeur numérique du dual plutôt que son expression au format JJ/MM/AAAA. En effet, dans le SET ANALYSIS un expression au format JJ/MM/AAAA est vue comme une chaine de caractères. Donc ça ne marchera pas.

- Dans votre cas, cela donnerait la formule finale suivante:

o count({$<LIAISON_POLICE_DTAFFIL={"<=$(=num(Today()))"},LIAISON_POLICE_DTRADIAT={">=$(=num(Today()))"},ADHERENT_DTSORTIE={">=$(=num(Today()))"}>}ADHERENT_NOUNIQUE)'

Je joins une petite appli de démo QlikView avec 4 champs standards inspirés de votre modèle, qui vous ramène le calcul dans un objet texte.

Cdt

Christophe Jouve

Senior Solution Architect

Direct: +33 1 55 62 65 54

Mobile: +33 6 76 24 22 47

Email: Christophe.Jouve@qlik.com

QlikTech

France Headquarters Office,93 avenue Charles de Gaulle

92200 Neuilly sur Seine

qlik.com<http://www.qlik.com/>

Business Discovery World Tour | Paris | 10 décembre 2013

http://www.qlikview.fr/bdwt-paris-2013

The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.

View solution in original post

6 Replies
swuehl
MVP
MVP

You need dollar sign expansion to evaluate functions in your advanced searches:

=count(

{$<

LIAISON_POLICE_DTAFFIL={"<=$(=Today())"},

LIAISON_POLICE_DTRADIAT={">=$(=Today())"},

ADHERENT_DTSORTIE={">=$(=Today())"}

>}

ADHERENT_NOUNIQUE)

Also the format of your date fields need to match your standard date format.

yvesqlik
Partner - Contributor III
Partner - Contributor III

Are sure that the the format from your fields(LIAISON_POLICE_DTAFFIL, LIAISON_POLICE_DTRADIAT, ADHERENT_DTSORTIE) is the same like today()? maybe you have to use the num() to conmpare the date...

Have you tried the if()-function

if(num(LIAISON_POLICE_DTAFFIL)<=num(today()),

     and ...

     and ...

     ,

count (ADHERENT_NOUNIQUE)

)

Not applicable
Author

Thank you yvesqlik and swuehl 🙂

The format of my fields is not the same for all. QlikView can not compare what is not comparable !

swuehl
MVP
MVP

You can use an additional date() formatting function to make field format match:

=count(

{$<

LIAISON_POLICE_DTAFFIL={"<=$(=Date(Today(),'YYYY-MM-DD'))"},

LIAISON_POLICE_DTRADIAT={">=$(=Date(Today(),'MM/DD/YYYY'))"},

ADHERENT_DTSORTIE={">=$(=Date(Today(),'DD.MM.YYYY'))"}

>}

ADHERENT_NOUNIQUE)

cje
Employee
Employee

Bonjour,

Plusieurs remarques :

- Un champ date n’existe pas dans QlikView. Il s’agit en fait d’un « dual » composé d’un nombre et d’une représentation formatée. Au chargement, s’il s’agit d’un nombre simple, QlikView le formate en utilisant la représentation par défaut (exemple, si on charge 123.54, QlikView va vous proposer une représentation décimale). S’il s’agit d’une représentation formatée comme une date (exemple 16/12/2013), QlikView va essayer de l’interpréter en tant que tel. Si l’interprétation est validée, QlikView va créer ce fameux dual en transformant la chaine de date en nombre puis en vous proposant la représentation par défaut à l’affichage sous la forme d’une date (exemple, 16/12/2013 devient 41624 mais est affiché comme 16/12/2013). Si l’interprétation est invalide, QlikView va le laisser tel quel et l’utiliser comme une chaine de caractères. On peut s’en rendre compte très simplement en utilisant les objets listes dans l’interface. Si la liste contient des dates valides, allez dans les propriétés de la liste, dans l’onglet Nombre, changez la représentation par défaut et passez sur un entier. Vous allez voir apparaitre le nombre du dual sous-jacent à la date.

- Quand on utilise une fonction telle que today() dans un SET ANALYSIS, il faut dire à QlikView d’évaluer le résultat de cette fonction avant de l’appliquer à la sélection du SET ANALYSIS. Pour ce faire, on doit employer la syntaxe générale suivante qui inclut l’opérateur $ permettant de faire l’évaluation :

o FONCTION_AGREGAT ( { < CHAMP = { $(=EXPRESSION_A_EVALUER) } > } INDICATEUR )

- Il faut en plus récupérer la valeur numérique du dual plutôt que son expression au format JJ/MM/AAAA. En effet, dans le SET ANALYSIS un expression au format JJ/MM/AAAA est vue comme une chaine de caractères. Donc ça ne marchera pas.

- Dans votre cas, cela donnerait la formule finale suivante:

o count({$<LIAISON_POLICE_DTAFFIL={"<=$(=num(Today()))"},LIAISON_POLICE_DTRADIAT={">=$(=num(Today()))"},ADHERENT_DTSORTIE={">=$(=num(Today()))"}>}ADHERENT_NOUNIQUE)'

Je joins une petite appli de démo QlikView avec 4 champs standards inspirés de votre modèle, qui vous ramène le calcul dans un objet texte.

Cdt

Christophe Jouve

Senior Solution Architect

Direct: +33 1 55 62 65 54

Mobile: +33 6 76 24 22 47

Email: Christophe.Jouve@qlik.com

QlikTech

France Headquarters Office,93 avenue Charles de Gaulle

92200 Neuilly sur Seine

qlik.com<http://www.qlik.com/>

Business Discovery World Tour | Paris | 10 décembre 2013

http://www.qlikview.fr/bdwt-paris-2013

The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.

schivet
Contributor III
Contributor III

Hello,

It's always tricky with set analysis do most of time I use this perfect blog from Stefan Whalter:

http://www.qlikblog.at/1384/set-analysis-wizard-qlikview/http://

Have fun

Regards

Stéphane Chivet