Sunteți pe pagina 1din 15

LES SET ANALYSIS

Sommaire
1

Utilit des SETS .................................................................................................................................... 3

Lidentificateur ....................................................................................................................................... 4

Les oprateurs ...................................................................................................................................... 4

Les Modificateurs .................................................................................................................................. 5


4.1

Toutes les positions ........................................................................................................................ 5

4.2

Des positions connues et nommes ............................................................................................... 6

4.3

Recherche de caractres ............................................................................................................... 7

4.4

Utilisation dune borne pour une dimension entire ........................................................................ 8

4.5

Utilisation dune variable ................................................................................................................. 8

4.5.1

Utilisation dune variable stockant une ou plusieurs positions .................................................. 8

4.5.2

Utilisation dune variable stockant une recherche de caractres .............................................. 9

4.5.3

Utilisation dune variable stockant des entiers ......................................................................... 9

4.5.4

Utilisation dune variable stockant une dimension.................................................................... 9

4.5.5

Utilisation dune variable stockant lexpression du set ........................................................... 10

4.6

Utilisation dune fonction ............................................................................................................... 10

4.6.1

Fonction retournant un numrique ......................................................................................... 10

4.6.2

Fonction retournant des positions .......................................................................................... 11

4.7

Utilisation des fonctions p() et e() ................................................................................................. 13

4.8

Utilisation de plusieurs champs .................................................................................................... 13

4.9

Les sets extrmes ........................................................................................................................ 14

4.9.1

Le set de la totalit de la base ............................................................................................... 14

4.9.2

Le set vide ............................................................................................................................. 14

Avant-propos
Jespre que cette documentation clairera ceux qui cherchent comprendre et maitriser cet pineux sujet mais central. Merci de me laisser vos
commentaires et remonter les erreurs si vous en trouvez.
Bonne lecture.

Il sagit de la version 1.0 de ce document. QlikView 11.20 SR2 a t utilis.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 1

Petite convention de nom :


Ma base ne respecte pas tout fait les principes de QlikView. Jen suis dsol mais cela ne nuira pas la lecture du document.

XXX_KEY : clef de la dimension


XXX_LDESC : longue description de la dimension
XXX_SDESC : courte description de la dimension

La base contient pour le temps :


-

Year
TIME_KEY, TIME_SNAME et TIME_NAME qui sont des priodes allant de 2010 la priode
actuelle de 2013.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 2

1 Utilit des SETS


Ils permettent de crer une slection indpendante ou seulement lgrement diffrente de la slection
active utilise dans le graphe ou le tableau. Le groupe cr via le set est diffrent de la slection active ce
qui permet de suivre lagrgation (somme, comptage ) de ce nouveau groupe et de la comparer la
slection courante.
Ces totalisations diffrentes peuvent servir afficher les donnes de lanne passe (et en calculer les
carts et les volutions par rapport lanne passe), un YTD mme si lutilisateur ne choisit quune
priode, des chiffres de la totalit de la dimension (donc calculer une part de march, un pourcentage de la
famille, catgorie, de la rgion ), dappliquer une slection sauvegarde (bookmark)
Le set va modifier le contexte des donnes uniquement dans lexpression utilise. Il est donc
impratif de nommer correctement lexpression utilise.
Les autres expressions, sauf utilisation dun set analysis, vont utiliser la slection standard ou du groupe
associ au graphe (Alternate State). Lutilisateur peut donc slectionner une anne et le graphe en afficher
deux (celle choisie, celle qui prcde), choisir une priode et le graphe afficher le YTD ou toutes les
priodes qui prcdent la priode choisie.
Un set analysis global est toujours crit entre {}. Il peut tre compos dun ou de plusieurs sets imbriqus
ce qui peut compliquer grandement lcriture ou la lecture. Lorsque ces sets imbriqus sont avec
modificateurs (afin den modifier la slection de dpart), ils sont crits entre crochets angulaires (<>).
On peut modifier le contexte la slection dune ou plusieurs dimensions selon les besoins de
calcul.

Un set analysis peut tre compos de 3 morceaux distincts :


-

Lidentificateur
Loprateur
Le modificateur

Chacun de ces 3 composants sont optionnels. Vous trouverez donc des sets sans identificateur, ou sans
oprateur ou sans modificateur. Evidemment, sans les 3, vous naurez aucun set !! Ces 3 composants vont
nous servir de trame ce document.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 3

2 Lidentificateur
0 un set vide
1 le set de la totalit de la base
$ - la selection courante (attention la selection courante nest pas forcment celle utilise par le tableau ou
graphe si vous utilisez des Alternate States)
$1 la selection prcdente ($2: la prcdente de la prcdente, etc.)
$_1 la selection suivante
Bookmark01 le nom ou lID de la slection sauvegarde (bookmark)
Group le nom du groupe (Alternate State)

Sum({Book1} [Sales]) : les ventes de la slection Book1


Sum({Group1} [Sales]) : les ventes de l Alternate State Group1
Sum({1} [Sales]) : les sommes totales de la base (toutes les dimensions sont All)
Sum({$} [Sales]) : les ventes de la slection courante (= sum([Sales])

3 Les oprateurs
+ : union des sets
*: intersection des sets
- : Exclusion des deux sets
/ : Set dont les membres nappartiennent qu un seul des deux sets
Ces oprateurs ne sont pas prsents dans tous les sets mais nous les verrons dans le chapitre suivant :
<Dimension += autre set> : ajouter lautre set de slection la slection actuelle
<Dimension -= autre set> : retirer lautre set de slection de la slection actuelle

Sum({1-$} [Sales]) : somme des ventes pour tout ce qui nest pas dans la slection (1=tout, $ signifie ici la
slection courante par dfaut
Sum({GROUP1 * Book1} [Sales]) : somme des ventes pour tout ce qui est commun entre la slection
courante de GROUP1 et le Bookmark Book1

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 4

Les sets que lon va tudier dans la section des modificateurs sont insrs entre crochets angulaires : <>.
On peut crer des sets et les assembler via les oprateurs ci-dessus.
{<set 1> -<set 2>} ou {set 1}-{set 2}: positions dans le set 1 qui ne sont pas dans le set 2

4 Les Modificateurs
Ils permettent de rduire ou dlargir la slection sur une ou plusieurs dimensions. Cest la partie
complique des Sets Analysis.
Le set ne reproduit pas les clics Utilisateur dans les ListBox. Si vous dcidez de fixer dans le set un produit
qui nest pas vendu chez un client, malheureusement slection de lutilisateur, votre set sera vide. Une telle
slection produit dans les ListBox aurait eu pour effet de reslectionner les clients vendant ce produit, mais
gardez en tte que ce nest pas le cas des sets.
Attention galement aux priodes : vouloir slectionner lanne prcdente (Year-1) ou un YTD va nous
obliger parfois remettre plat la slection sur lensemble des dimensions temporelles.

4.1 Toutes les positions


{Slection de dpart <Dimension1 = {*} >}
Ou
{Slection de dpart <Dimension1 = [, Dimension2 = {position 1, position 2, }]
>}
Pour rcuprer toutes les positions de la dimension, on peut donc mettre aprs le signe = :
-

{*} ou {"*"} sil sagit de texte


rien

Comme on le voit dans les exemples ci-dessous, le {*} peut tre omis.
Ex : Tous les fabricants mais sur la catgorie ACC
{<FABRICANT_LDESC = {"*"}, CATEGORY_LDESC={"ACC"} >}
{<FABRICANT_LDESC =, CATEGORY_LDESC={"ACC"} >}

Attention, dans Qlikview nous crons souvent plusieurs ListBox agissant peu ou prou sur la mme
dimension. Cest le cas de laxe temporel o lon dispose une ListBox sur les mois, lautre sur lanne. Et
videmment, lutilisateur peut se servir des deux ListBox.
Regardez les diffrences entre les 2 sets ci-dessous :
{<YEAR = {2012}>} revient prendre les mois actuellement slectionns mais pour lanne 2012, peut-tre
tous, peut-tre pas
Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 5

{<MONTH=, YEAR = {2012}>} revient prendre tous les mois de lanne 2012
Les deux dimensions sont en quelque sorte indpendantes. Et il convient de remettre la slection ALL
sur tous les champs qui sont slectionnables via ListBox dans un onglet.

4.2 Des positions connues et nommes


Syntaxe de base :
{Slection de dpart <Dimension1 = {position 1, position 2, } [, Dimension2 =
{position 1, position 2, }] >}
Ex : {<FABRICANT_LDESC = {AMBOISE, BELLE, AUTREMENT}>}
Ex : {<FABRICANT_LDESC = {AMBOISE, BELLE, AUTREMENT}, CATEGORY_LDESC={ACC}>}

Ex dans la syntaxe globale : sum({<FABRICANT_LDESC = {AMBOISE, BELLE, AUTREMENT}>} [Ventes


Valeur en Euro])

Noter que :
- La slection de dpart peut tre la slection courante ($) qui est le dfaut, la totalit de la base (1),
une slection sauvegarde (un bookmark), un groupe (Alternate State). Ci-dessus, lapplication
somme la slection courante sauf sur la dimension Fabricant qui ne contiendra que les 3 positions
nommes.
- Il ny a pas de virgule entre le set et la mesure sommer
- La dimension doit tre insre entre crochets droits [] si elle contient un caractre spcial comme
un espace, un trait dunion .
- Les positions sont toujours insres galement dans des {} quelles soient nommes ou trouves
via un test
- Les positions sont spares dune virgule (,)
- Les positions numriques ne sont pas insres entre apostrophes ou guillemets
- Les positions texte ne sont pas ncessairement insres entre guillemets ou apostrophes : ceux-ci
sont indispensables si les positions ont des caractres spciaux tels les espaces. Nanmoins, en
mettre ne nuit pas pour les caractres.
Ex : {<FABRICANT_LDESC = {"AMBOISE","BELLE"}, CATEGORY_LDESC={"ACC", "PLATS CHAUDS}>}
Ex : {<FABRICANT_KEY = {253, 2789, 1200}, CATEGORY_LDESC={"ACC", "PLATS CHAUDS}>}

Si lon omet des positions sur lune des dimensions, le set est vide :
Ex : {<FABRICANT_LDESC = {}, CATEGORY_LDESC={ACC} >}

Apostrophes, guillemets ou crochets


QlikView accepte les trois syntaxes pour les positions texte. On peut donc crire :
{<FABRICANT_LDESC = {"AMBOISE"}>}
{<FABRICANT_LDESC = {AMBOISE}>}
{<FABRICANT_LDESC = {[AMBOISE]} >}

Et comme il ny a pas despace dans le champ, on peut lcrire dune quatrime manire :
{<FABRICANT_LDESC = {AMBOISE}>}

Nous verrons plus tard que lon peut inclure une fonction dagrgation qui va rechercher les positions en
fonction dun critre. Il est alors ncessaire dutiliser les guillemets pour le gnral, et les apostrophes ou
crochets pour le texte intrieur si cela est ncessaire.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 6

4.3 Recherche de caractres


On peut aussi vouloir tous les fabricants qui commencent par certaines lettres ou qui ont certains
caractres dans leur nom :
Syntaxe : {<Dimension = {"*recherche*"}>}
Si lon souhaite faire plusieurs recherches en plus dun texte fixe :
Syntaxe : {<Dimension = {"*recherche1*", "texte fixe", " ?echerche2*"}>
Ex : {<FABRICANT_LDESC = {"ENT*", "?LIS*"}, CATEGORY_LDESC={"A?? "} >}

Et bien sr si lon veut toutes les positions dune dimension : <Dimension = {"*"}> quon peut aussi crire
simplement <Dimension =>
Comme on le voit dans les exemples ci-dessous, le {*} peut tre omis.
Ex : Tous les fabricants mais sur la catgorie ACC
{<FABRICANT_LDESC = {"*"}, CATEGORY_LDESC={"ACC"} >}
{<FABRICANT_LDESC =, CATEGORY_LDESC={"ACC"} >}

Ex : Tous les fabricants sauf ceux qui commencent par ENT


{<FABRICANT_LDESC = {"*"} - {"ENT*"}>}
{<FABRICANT_LDESC = - {"ENT*"}>}

Ex : Tous les fabricants de la slection + ceux qui commencent par ENT


{<FABRICANT_LDESC += {"ENT*"}>}

Ex : Tous les fabricants de la slection sauf ceux qui commencent par ENT
{<FABRICANT_LDESC -= {"ENT*"}>}

Attention : {<FABRICANT_LDESC -= {"ENT*"}>} et {<FABRICANT_LDESC = -{"ENT*"}>}


sont trs diffrents. Le premier retire de la slection actuelle tous les fabricants commenant par ENT,
tandis que le second prend tous les fabricants sauf ceux commenant par ENT : le {"*"} est par dfaut.
Ex : Tous les fabricants, toutes catgories quelles que soient les slections faites
sur ces deux dimensions
{<FABRICANT_LDESC = {"*"}, CATEGORY_LDESC={"*"} >}
Ex : Toutes les annes (cest du numrique, pas de guillemets), toutes les catgories
{<Year = {*}, CATEGORY_LDESC={"*"} >}

Part des catgories slectionnes pour chaque fabricant, sachant que les fabricants dimensionnent le
tableau (mais pas les catgories) :
Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 7

%Categorie : sum([Ventes Volume])/sum({$ <CATEGORY_LDESC={"*"}>} [Ventes Volume])


%Fabricant : sum([Ventes Volume])/sum(TOTAL [Ventes Volume])

(chiffres fictifs, acteurs rels)

Rappel : QlikView accepte le guillemet, lapostrophe ou le crochet droit. Cest le cas aussi pour la
recherche de caractre. On peut donc crire :
Ex :
{<FABRICANT_LDESC = {"E*"}, CATEGORY_LDESC={"A??} >}
{<FABRICANT_LDESC = {E*}, CATEGORY_LDESC={A??} >}
{<FABRICANT_LDESC = {[E*]}, CATEGORY_LDESC={[A??]} >}

4.4 Utilisation dune borne pour une dimension entire


Il arrive frquemment que les codes des annes soient des entiers (2000, 2001, ), que certains codes de
dimension le soit aussi.
Il faut avouer que la syntaxe nest pas vidente puisquil faut insrer le test boolen entre guillemets :
{<TIME_KEY = {"<12}}: toutes les priodes dont TIME_KEY est strictement infrieure 12
{<TIME_KEY = {">=12 <=18}}: entre 12 et 18, les 2 bornes comprises
Ex: Les priodes 4,5, 6 et celles entre 12 comprise et 20 exclue
{<TIME_KEY = {4, 5, 6} + {">=12 <20}}

4.5 Utilisation dune variable


4.5.1

Utilisation dune variable stockant une ou plusieurs positions

Syntaxe : <Dimension = {$(NomVariable)} >


Ou
<Dimension = {$(=NomVariable)} >
(avec ou sans le signe = devant la variable)

A noter que $(=NomVariable) va interprter la variable et rcrire la syntaxe avant excution. Le


contenu de cette variable peut donc contenir plusieurs positions de la dimension qui doivent tre spares
comme on lcrirait dans la syntaxe, cest--dire dune simple virgule. Les guillemets sont absents de cette
syntaxe mme si on peut lcrire avec dans certains cas.
Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 8

Ex :
<FABRICANT_LDESC = {$(vChoixFabricant)}, CATEGORY_LDESC={$(=ChoixCategorie)}>

Attention : on trouve aussi le $ dans les set analysis signifiant slection courante par dfaut.
$(NomVariable): peut tre insr ou non entre guillemets si la variable elle-mme nen contient pas.

Aucun guillemet dans la syntaxe comme ci-dessus doit tre prfr car cela permet davoir une variable qui
contient des champs avec des espaces comme AUTRES FABRICANTS et quil faut insrer, eux, entre
guillemets :

4.5.2 Utilisation dune variable stockant une recherche de caractres


Exemple de recherche de caractres : {<FABRICANT_LDESC = {"E*"}, CATEGORY_LDESC={"A??} >}
Noter que si la variable vChoixProduit contient une recherche de caractres comme "E*" (les guillemets
sont indispensables et font partie de la valeur de la variable), alors on peut crire la syntaxe ci-dessus de
cette faon :
{<FABRICANT_LDESC = {$(vChoixProduit)}, CATEGORY_LDESC={[A??]} >}

4.5.3 Utilisation dune variable stockant des entiers


Avec les entiers, il est ncessaire de mettre les guillemets :
{<TIME_KEY = {"<$(vPremierePeriode)"}>}
Ou {<TIME_KEY = {"<$(=vPremierePeriode)"}>}

Entre deux priodes stockes dans des variables :


{<TIME_KEY = {">$(vPremierePeriode) <$(=vDernierePeriode)"} >}

4.5.4 Utilisation dune variable stockant une dimension


Nous avons vu que QlikView permettait lutilisation dune variable dans le set via son interprtation avec le
signe dollar ($).
On peut galement crer une variable qui stockera une dimension et lutiliser dans le set :
Ex : sum( {$ <$(vDim)={"*"} >} [Ventes Volume])
On souhaite avoir ci-dessus lensemble des positions de la dimension contenue dans la variable vDim.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 9

4.5.5 Utilisation dune variable stockant lexpression du set


On peut aller encore plus loin en stockant la totalit de la commande du set, ou seulement une partie si on
souhaite amender celle-ci afin de linclure dans plus de commandes.
Ex : sum({$ <$(vSet) >} [Ventes Volume])
On souhaite avoir ci-dessus la somme des Ventes de ce qui est contenu dans la variable vSet.
Ex : sum({$ <$(vSet), CATEGORY_LDESC= "ACC" >} [Ventes Volume])
On souhaite avoir ci-dessus la somme des Ventes de ce qui est contenu dans la variable vSet mais
uniquement pour la catgorie ACC
La variable vSet doit contenir un set valide mis part les <> :
-

FABRICANT_LDESC ={"*"}, TIME_SDESC={"P 01/13"}


Year={$(=max({1} Year))}, TIME_LDESC=

4.6 Utilisation dune fonction


Avec une telle fonction on peut trouver la dernire ou lavant-dernire priode, les catgories, fabricants qui
ralisent au moins tel CA, sur telle priode, telle famille de produits ou sur lensemble de la base. On peut
galement imbriquer plusieurs fonctions entre elles afin de former un groupe des 5 meilleurs produits ou
fabricants la dernire anne, et de suivre ce Top 5 sur un historique choisi.
4.6.1

Fonction retournant un numrique

Syntaxe : <Dimension = {" $(=f(args)) "}

le $ de la syntaxe est ici le signe dexpansion, cest--dire linterprtation de la fonction.


Trouver lavant dernire priode peut se raliser avec la fonction max([{set}] Champ)
<Year = {"$(=max({1} Year)-1)"}>
A noter que la fonction max() tient compte de la slection de lutilisateur. Elle renvoie donc la dernire
priode choisie par lutilisateur. Do le {1} qui signifie la totalit de la base (voir section sur les oprateurs)
Si lon recherchait la dernire anne slectionne par lutilisateur, on pourrait crire :
- <Year = {"$(=max({$} Year)-1)"}>
- <Year = {"$(=max(Year)-1)"}> puisque le second $ signifie la slection courante qui est le
dfaut
Lorsquon cherche slectionner les priodes prcdentes (A-1, M-1), les choses se compliquent
dangereusement. Il est souvent prfrable de modifier la structure de la base par exemple pour stocker des
informations de type A-1, YTD Ci-dessous un exemple o lon stocke lanne prcdente (champ A-1),
la priode prcdente (champ P-1), si oui ou non la priode doit tre calcule dans le YTD (YTD) :

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 10

Trouver les ventes de A-1, un champ [A-1] contient pour chaque TIME_KEY la position de A-1 en tant que
clef trangre (un numrique donc) :
sum({<MONTH=, YEAR=, TIME_KEY = {$(=concat([A-1], ',')) } >} VALEUR)

YTD :
sum({<MONTH=, YTD = {1}, YEAR = >} VALEUR)

YTD de A-1 :
sum({<MONTH=, YTD = {1}, YEAR = {$(=YEAR-1)} >} VALEUR)

MOVING TOTAL 12 priodes :


sum({<MONTH=, YEAR=, TIME_KEY={">$(=Max(TIME_KEY)-12) <=$(=Max(TIME_KEY))"}>} VALEUR)

MOVING TOTAL 12 priodes A-1:


sum({<MONTH=, YEAR=, TIME_KEY={">$(=Max(TIME_KEY)-24) <=$(=Max(TIME_KEY)-12)"}>} VALEUR)

Comme les sets Analysis peuvent vite devenir compliqus, on peut grer les YTD, Moving total, les
YearAgo en modifiant le modle (voir le document que jai crit ce sujet :
http://community.qlikview.com/docs/DOC-4821 )
A noter galement que certains crent des flags (un peu comme ci-dessus avec des 1 et 0) pour ensuite :
Sum(VALEUR*Flag)
Cette faon a lavantage dtre trs simple. Mais elle est plus coteuse que sum({<Flag = {1}> VALEUR)
car QlikView dans le second cas rduit avant le calcul les lignes rentrant dans le primtre. Avec
sum(VALEUR*Flag), QlikView ne rduit pas le primtre de calcul. Voir lexcellente rponse de John
Witherspoon lors de la discussion : http://community.qlikview.com/message/1434

4.6.2

Fonction retournant des positions

La fonction texte doit tre insre entre guillemets et prcd du signe gal (=).
Syntaxe : <Dimension = {"=f(arguments de f) "} >

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 11

Sommer le volume des fabricants qui ralisent plus de 100K de ventes sur la slection courante (ici le $
est nomm)
sum( {$ <FABRICANT_LDESC={"=sum([Ventes Valeur en Euro])>100000"} >} [Ventes Volume])

Sommer le volume des fabricants qui ralisent plus de 100K de Ventes Volume sur les catgories ACC et
GATEAUX FROMAGERS sur la premire priode 2013 : il faut donc insrer un set dans la fonction sum()
qui calcule le set principal.
sum( {$ <FABRICANT_LDESC={"=sum({1<TIME_SDESC={'P 01/13'},
CATEGORY_LDESC={'ACC','GATEAUX FROMAGERS'}>} [Ventes Volume])>100000"} >} [Ventes
Volume])

Comme nous lavons vu plus haut, QlikView accepte les guillemets ou les apostrophes. On en voit ici
lintrt (les positions pour le set intrieur sont entre apostrophes ou crochets droits) pour ne pas fermer
prcipitamment la fonction.

Sommer les fabricants qui ralisent plus de 100K de Ventes Volume sur les catgories ACC et GATEAUX
FROMAGERS sur la premire priode 2013. Retirer de ce total les fabricants qui ralisaient moins de 50K
sur toutes les catgories sur la premire priode 2012.
Il va falloir donc crer deux sets que lon va soustraire : {<set 1> - <set 2>}, chacun des sets utilisant une
fonction sum() incluant elle-mme un modificateur :
Le set 1 = 1 <FABRICANT_LDESC={"=sum({1< TIME_SDESC={'P
01/13'},CATEGORY_LDESC={'ACC','GATEAUX FROMAGERS'}>} [Ventes Volume])>50000"} >
Le set 2 = <FABRICANT_LDESC={"=sum({1< TIME_SDESC={'P 01/12'},CATEGORY_LDESC={'*'}>}
[Ventes Volume])>500000"} >}

Pour une syntaxe un peu longue :


sum( {1 <FABRICANT_LDESC={"=sum({1< TIME_SDESC={'P
01/13'},CATEGORY_LDESC={'ACC','GATEAUX FROMAGERS'}>} [Ventes Volume])>50000"} >
- <FABRICANT_LDESC={"=sum({1< TIME_SDESC={'P 01/12'},CATEGORY_LDESC={'*'}>} [Ventes
Volume])<50000"} >}
[Ventes Volume])

quon pourrait lgrement rduire :


sum( {1 <FABRICANT_LDESC={"=sum({1< TIME_SDESC={'P
01/13'},CATEGORY_LDESC={'ACC','GATEAUX FROMAGERS'}>} [Ventes Volume])>50000"} {"=sum({1< TIME_SDESC={'P 01/12'},CATEGORY_LDESC={'*'}>} [Ventes Volume])<50000"} >}
[Ventes Volume])

Attention bien crire les champs au sein de sum() : comme il sagit de texte, vous navez aucune aide de
QlikView qui est trs sensible la casse. Ecrire TIME_sDESC au lieu de TIME_SDESC vous garantit
davoir 0 ou un rsultat faux car votre qualification sur TIME_SDESC ne sera pas prise (retour la
slection). Il est de bon usage de tester le sum() intrieur indpendamment dans un tableau afin den
valider les rsultats.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 12

4.7 Utilisation des fonctions p() et e()


Ces fonctions permettent de retourner les valeurs dune dimension en fonction dun test tel les clients qui
ont eu des ventes telle anne (et suivre ainsi ce groupe de clients sur un historique donn), les nouveaux
produits ou ceux abandonns cette anne . Contrairement la fonction sum() ci-dessus, QlikView opre
juste par associativit : il y a des donnes ou il ny en a pas.
Syntaxe : {<Dimension1 = P({< {Set Dimension fixer}
dimensions du Set]>}

Dimension1 }>) [, Autres

Remarques :
-

Le set de la dimension fixer va suivre les rgles vues plus haut ainsi que ceux concernant les
autres dimensions
Les fonctions p() et e() ont la mme syntaxe : lune renvoie les possibles, lautre les valeurs exclues
Ces fonctions vont tre insres au sein dun set plus grand (voir ci-dessous)
Ces fonctions ne permettent pas de rechercher les N meilleurs fabricants (ou ceux qui sont en
augmentation de CA) afin de constituer un groupe (ou set) que lon va suivre sur lhistorique : il ny a
aucune mesure dans la syntaxe, seule lassociativit est utilise (il y a des donnes ou il ny en na
pas)

Rappel : le nom de la dimension doit tre insr entre [] sil contient des espaces.

Ex : Recherche des fabricants qui vendent sur le march ACC lors de P01/13. Et afficher les ventes de ces
fabricants pour toutes les catgories.
sum({$ <CATEGORY_LDESC={"*"}, FABRICANT_LDESC=p({1<CATEGORY_LDESC={"ACC"},
TIME_SDESC= "P 01/13">} FABRICANT_LDESC) >} [Ventes Valeur en Euro])

Ex : Recherche des nouveaux fabricants entrs sur le march ACC (prsents sur la dernire priode et non
sur toute lanne prcdente)

4.8 Utilisation de plusieurs champs


On peut vouloir garder toutes les positions dune dimension lorsque celles-ci galent un autre champ :
-

Client factur = client livr


Date Commande = Date Livraison
Marque = Compagnie (pour les compagnies ponymes)

La syntaxe se rapproche de celle vue en 4.6.2.


Syntaxe : {<Dimension = {"=condition bool"}>}

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 13

Attention : la dimension recherche ne peut tre de nouveau dans la condition. Au besoin, il est
ncessaire via Autonumber() de numroter les lignes afin de crer un champ de clef.
On veut par exemple calculer les ventes qui ont t livres le jour mme. Nous disposons de deux champs
JourCommande et JourLivraison.
Sum({<KeyAutoNumber = {" =(JourCommande=JourLivraison)" }

>} Ventes)

On en dduit facilement la recherche des ventes qui nont pas t effectues dans les 7 jours (le dlai
acceptable peut tre saisi et stock dans une variable) :
Sum({<KeyAutoNumber = {" =(JourCommande<JourLivraison-7)" }

>} Ventes)

Sum({<KeyAutoNumber = {" =(JourCommande<JourLivraison-$(vDelai))" }

>} Ventes)

Il est nanmoins plus facile dcrire un test dans la fonction sum mme si cette syntaxe est plus longue
excuter. En effet, QlikView va balayer la totalit de la slection pour le calcul et non une petite partie lie
au set :
Sum(if(JourCommande=JourLivraison, Ventes))

La fonction if() retourne Null() si le 3e paramtre a t oubli (comme ci-dessus) et que la condition est
fausse. Cette syntaxe ne ncessite pas un champ clef supplmentaire aux deux champs utiliss.

4.9 Les sets extrmes


4.9.1

Le set de la totalit de la base

Il suffit dutiliser le 1 insr dans les {} : {1}


sum({1} [Ventes Valeur en Euro])

Dernire anne (nous lavons dj vu) :


$(=Max({1} YEAR))

4.9.2

Le set vide

Il arrive que le rsultat de notre magnifique set soit 0. Cela peut venir dune volont mais plus
probablement dune erreur. Reste vrifier la syntaxe et regard si on a :
-

utilis le {}, sans rien, comme dj voqu dans ce document


mal nomm les composantes du set (attention, QlikView est sensible la casse : Year est donc
diffrent de YEAR)
crit un ensemble invalide (qui ne fait pas partie des slections possibles) comme crire un couple
Produit-Client alors que ce dernier nachte pas le produit en question
utilis dans un set imbriqu une fonction test (comme sum > x) qui ne renvoie aucune position

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 14

oubli des champs qui rendent lensemble invalide avec la slection actuelle : dune faon gnrale,
si sur une mme dimension comme le temps, on dispose plusieurs ListBox, lutilisateur a peut-tre
slectionn ces diffrents champs rendant lintersection avec le set analysis vide => il faut donc
remettre ALL la slection dun ou plusieurs champs.

Ex : on veut sommer la totalit de lanne 2012 et lutilisateur a toujours le choix pour slectionner les
priodes dans un champ TIME_DESC
sum({$ <Year = {2012}, CATEGORY_LDESC= "ACC" >} [Ventes Volume])

La somme ci-dessus sera lintersection de :


-

Year 2012
Les slections sur TIME_DESC (donc en aucun cas la totalit de 2012)

Si lutilisateur a choisi la priode P 01/11 de notre base (TIME_SDESC contient ici les priodes de
P01/10 P07/13), le champ des possibles entre cette slection et Year 2012 est vide. La somme sera
donc gale 0. Et lorsque lutilisateur choisit P 01/12 la somme est celle de cette priode : en effet,
lintersection entre Year 2012 et P 01/12 est P 01/12 !!
Il faut donc rcrire la commande pour slectionner tous les TIME_SDESC:
sum({$ <Year = {2012}, TIME_SDESC = , CATEGORY_LDESC= "ACC" >} [Ventes Volume])

Donc pour le temps, on a tendance nommer toutes les dimensions TEMPS dans le set afin dviter ce
genre de dsagrment. Dans une base qui aurait comme dimensions lies au temps YEAR, QUARTER,
MONTH et DAY, on crirait pour avoir la somme de lanne 2012 :
sum({$ <Year = {2012}, QUARTER =, MONTH=, DAY= > [Ventes Volume])

Ainsi, quelle que soit la slection de lutilisateur, on aurait la totalit de lanne 2012.

Fabrice AUNEZ version 1.0

Les Sets Analysis-Page 15

S-ar putea să vă placă și