Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
Je vous expose mon problème :
Ma base teste :
test |
---|
A |
AB |
A |
AB |
A |
Code au chargement de Qlik Sense :
LOAD [test],
if(WildMatch(enseigne, '*A*'), 'a',
if(WildMatch(enseigne, '*B*'), 'b'))
FROM....
Le but est de créer un tableau qui compte 'a' (donc les A et les AB) et 'b' (les AB).
Merci pour votre aide.
Je souhaite compter les *BDDF*, les *CDN*, les *GTPS* etc.
Je veux aussi que pour BDDFCDN par exemple, Qlik le compte une fois comme un *BDDF* et une autre fois comme un *CDN*. Pour l'instant, à partir du moment ou Qlik a compté BDDFCDN une première fois, il ne le reclasse pas une seconde fois.
Mon code ressemble à ça :
if(WildMatch("Enseigne utilisatrice", '*BDDF*') , 'BDDF', //CREATION DU CHAMPS GroupeEnseigne
if(WildMatch("Enseigne utilisatrice", '*DC*')
or WildMatch("Enseigne utilisatrice", '*Groupe*')
or WildMatch("Enseigne utilisatrice", '*Réseau*')
or WildMatch("Enseigne utilisatrice", '*BSC*')
or WildMatch("Enseigne utilisatrice", '*Ligne Métier*')
or WildMatch("Enseigne utilisatrice", '*Pôle*')
or WildMatch("Enseigne utilisatrice", '*RBDF*')
or WildMatch("Enseigne utilisatrice", '*RESG*'), 'BSC',
if(WildMatch("Enseigne utilisatrice", '*GTPS*'), 'GTPS',
if(WildMatch("Enseigne utilisatrice", '*CDN*'), 'CDN',
if(WildMatch("Enseigne utilisatrice", '*IBFS*'), 'IBFS',
if(WildMatch("Enseigne utilisatrice", '*FRANFINANCE*'), 'FRANFINANCE',
if(WildMatch("Enseigne utilisatrice", '*TRANSACTIS*'), 'GTPS',
if(WildMatch("Enseigne utilisatrice", 'Cellule_Vide'), 'Cellule_Vide',
if(not WildMatch("Enseigne utilisatrice", '*BDDF*')
or not WildMatch("Enseigne utilisatrice", '*DC*')
or not WildMatch("Enseigne utilisatrice", '*Groupe*')
or not WildMatch("Enseigne utilisatrice", '*Réseau*')
or not WildMatch("Enseigne utilisatrice", '*BSC*')
or not WildMatch("Enseigne utilisatrice", '*Ligne Métier*')
or not WildMatch("Enseigne utilisatrice", '*Pôle*')
or not WildMatch("Enseigne utilisatrice", '*RBDF*')
or not WildMatch("Enseigne utilisatrice", '*RESG*')
or not WildMatch("Enseigne utilisatrice", '*GTPS*')
or not WildMatch("Enseigne utilisatrice", '*CDN*')
or not WildMatch("Enseigne utilisatrice", '*SIMBA*')
or not WildMatch("Enseigne utilisatrice", '*FRANFINANCE*')
or not WildMatch("Enseigne utilisatrice", '*GTPS*'), 'Autres'
)))))))))
Désolé pour ces fragments de réponse à chaque fois, j'espère que c'est plus clair maintenant.
Voici le résultat obtenu avec vos données:
Et le script suivant :
Enseigne:
LOAD Enseigne
Inline [
Enseigne
BDDF
BDDFCDN
BDDFCDNGTPS
BDDFCDNPRIV/FRA
BDDFGTPS
BDDFPRIV/FRA
BDDF, CDN
BDDF, CDN, GTPS
BDDF, CDN, GTPS, TRANSACTIS
BDDF, CDN, IBFS
BDDF, DC
BSC
CDN
DC
Groupe
GBIS
];
tmpDistinctEnseigne:
LOAD Distinct
Enseigne as DistinctEnseigne
Resident Enseigne;
tmpCritèreGroupe:
LOAD * Inline [
Critère, Groupe
*BDDF*, BDDF
*DC*, BSC
*Groupe*, BSC
*Réseau*, BSC
*BSC*, BSC
*Ligne Métier*, BSC
*Pôle*, BSC
*RBDF*, BSC
*RESG*, BSC
*GTPS*, GTPS
*CDN*, CDN
*IBFS*, IBFS
*FRANFINANCE*, FRANFINANCE
*TRANSACTIS*, GTPS
Cellule_Vide, Cellule_Vide
];
//Initialisation de la structure
tmpGroupe:
LOAD *
INLINE [
EnseigneGroupée, Groupe
];
LET ligneCritereGroupe = NoOfRows('tmpCritèreGroupe');
FOR i=0 to $(ligneCritereGroupe)-1 // parcourt toutes les ligne
LET vCritère = Peek('Critère',$(i), 'tmpCritèreGroupe');
LET vGroupe = Peek('Groupe',$(i), 'tmpCritèreGroupe');
Concatenate(tmpGroupe)
LOAD
DistinctEnseigne as EnseigneGroupée,
'$(vGroupe)' as Groupe
Resident
tmpDistinctEnseigne
Where
DistinctEnseigne like '$(vCritère)';
NEXT
Concatenate(tmpGroupe)
LOAD
DistinctEnseigne as EnseigneGroupée,
'Autres' as Groupe
Resident
tmpDistinctEnseigne
Where
not Exists(EnseigneGroupée, DistinctEnseigne);
Left Join(Enseigne)
LOAD
EnseigneGroupée as Enseigne, // key
Groupe
Resident tmpGroupe;
DROP Table tmpGroupe;
DROP Table tmpCritèreGroupe;
DROP Table tmpDistinctEnseigne;
Ton code marche très bien, me reste plus qu'à l'intégrer correctement au reste mon application.
Merci pour ton aide et ta patience.