Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
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