Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content
Announcements
Yikes! We're aware of some unexpected text appearing at the top of each group and are looking into it.
cancel
Showing results for 
Search instead for 
Did you mean: 
elanglois33
Contributor II
Contributor II

QS - Formule vérification contenu

Bonjour,

J'ai besoin de catégoriser des commandes en fonction de leur contenu.

Ma règle se porte sur les articles de la FamilleProduit = A :

Par numéro de commande (NumCde), je vérifie la présence dans une même commande d’au moins un article de 5 sous-famille :

Sous-Famille 1

Sous-Famille 2

Sous-Famille 3

Sous-Famille 4

Sous-Famille 5

Si c’est le cas, je flag ma commande « Ok ».

Pour toutes les autres commandes, je flag « Autres ».

Avez-vous une idée de comment je peux contrôler la présence des différentes Sous famille dans chaque commande ?

J'ai essayé via une fonction count distinct mais ce n'est pas assez fin.

Merci d'avance

     

NumCdeArticleSsFamilleFamilleProduitRésultat attendu
0000001000001Sous-Famille 1AOk
0000001000002Sous-Famille 2AOk
0000001000003Sous-Famille 3AOk
0000001000004Sous-Famille 4AOk
0000001000005Sous-Famille 5AOk
0000001000006Sous-Famille 4AOk
0000002000001Sous-Famille 1AAutres
0000002000002Sous-Famille 2AAutres
0000002000004Sous-Famille 4AAutres
1 Solution

Accepted Solutions
Aurelien_Martinez
Partner - Specialist II
Partner - Specialist II

Bonjour,

Voici une solution :

DATA:

LOAD  *

INLINE [

    NumCde, Article, SsFamille, FamilleProduit

    0000001, 000001, Sous-Famille 1, A

    0000001, 000002, Sous-Famille 2, A

    0000001, 000003, Sous-Famille 3, A

    0000001, 000004, Sous-Famille 4, A

    0000001, 000005, Sous-Famille 5, A

    0000001, 000006, Sous-Famille 4, A

    0000002, 000001, Sous-Famille 1, A

    0000002, 000002, Sous-Famille 2, A

    0000002, 000004, Sous-Famille 4, A

];

Left Join(DATA)

LOAD

   NumCde,

   If(Count(DISTINCT SubField(SsFamille, ' ', 2)) = 5, 'OK', 'Autres') as TEST

Resident DATA

Group By NumCde

;

Aurélien

Help users find answers! Don't forget to mark a solution that worked for you!

View solution in original post

6 Replies
Aurelien_Martinez
Partner - Specialist II
Partner - Specialist II

Bonjour,

Voici une solution :

DATA:

LOAD  *

INLINE [

    NumCde, Article, SsFamille, FamilleProduit

    0000001, 000001, Sous-Famille 1, A

    0000001, 000002, Sous-Famille 2, A

    0000001, 000003, Sous-Famille 3, A

    0000001, 000004, Sous-Famille 4, A

    0000001, 000005, Sous-Famille 5, A

    0000001, 000006, Sous-Famille 4, A

    0000002, 000001, Sous-Famille 1, A

    0000002, 000002, Sous-Famille 2, A

    0000002, 000004, Sous-Famille 4, A

];

Left Join(DATA)

LOAD

   NumCde,

   If(Count(DISTINCT SubField(SsFamille, ' ', 2)) = 5, 'OK', 'Autres') as TEST

Resident DATA

Group By NumCde

;

Aurélien

Help users find answers! Don't forget to mark a solution that worked for you!
Aurelien_Martinez
Partner - Specialist II
Partner - Specialist II

au final, pas besoin du subfield, un Count(DISTINCT SsFamille) devrait suffire.

Help users find answers! Don't forget to mark a solution that worked for you!
elanglois33
Contributor II
Contributor II
Author

Bonjour,

Merci pour ta réponse.
J'ai réadapté ta formule, mais ça ne fonctionne pas.

IF(subfield(Spécification3,' ', 2)<>'PC','AUTRES',IF(COUNT(DISTINCT Mid(Spécification3,Len(subfield(Spécification3,' ', 1))+Len(subfield(Spécification3,' ', 2))+2,20))=5,'OK','AUTRES'))

J'ai besoin de ma fonction subfield pour tronquer mon champ "Spécification3".

1- subfield(Spécification3,' ', 2) = me donne la famille produit

2 - Mid(Spécification3,Len(subfield(Spécification3,' ', 1))+Len(subfield(Spécification3,' ', 2))+2,20) = me donne la sous famille

C'est quand j'ajoute la condition 1 que ça plante.

Merci d'avance.

christophebrault
Specialist
Specialist

bonjour,

ppour vérifier la présence d'une chaine dans un champ, tu peux utiliser la fonction substringcount()

https://help.qlik.com/en-US/qlikview/November2017/Subsystems/Client/Content/Scripting/StringFunction...

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
Aurelien_Martinez
Partner - Specialist II
Partner - Specialist II

En ajoutant le subfield(Spécification3,' ', 2) dans le group by ?

Help users find answers! Don't forget to mark a solution that worked for you!
elanglois33
Contributor II
Contributor II
Author

Parfait ça marche

Merci beaucoup