Skip to main content
Announcements
Global Transformation Awards submissions are open! SUBMIT YOUR STORY
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Création de groupe, problème if, elseif

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.

12 Replies
Not applicable
Author

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.

sfatoux72
Partner - Specialist
Partner - Specialist

Voici le résultat obtenu avec vos données:

Community_1222152.png

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;

Not applicable
Author

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.