Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Highlighted
borislepage
New Contributor III

Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Bonjour à tous,

Je dois réaliser une application qui mesure la volumétrie de nouveaux clients / clients réactivés / clients perdus / clients loyaux, par semaines, mois, années

J'ai regardé pas mal de tuto ou de discussions sur le sujet mais aucune ne répond vraiment à mes besoins.

Voici les différents critères pour chaque typologies de clients.

- Nouveaux Clients, [Flag nouveau client, lors de sa première commande],

     j'ai pus résoudre ce point en récupérant la date de première commande dans une table à part, et avec un apply map j'applique le flag           sur la date de première commande du client.

- Clients Réactivés, [Flag client réact, lors du passage d'une commande après un an sans avoir passé de commande]

     J'arrive à faire se flag, mais uniquement sur les dernières commandes avec un Max(Timestamp) & Max(Timestamp,2); mais cela           écrase un potentiel ancien flag réact

- Client Perdus [Flag client perdus, si aucune commande depuis 3 mois]

- Client Loyaux [Flag client loyal, si 1 commande par mois depuis 3 mois]

J'ai deux tables une qui provient de ma BDD et la deuxième créé pour le flag nouveau client et client réact, à date mais ne convient pas parfaitement à mon besoin

[ORDER]:

- Order_Number

- Customer

- Date_Commande

[Customer_id_MinMaxLastDate]:

Load

     Customer,

     Min(Date_Commande)        AS [Min_DateCde],     

     Max(Date_Commande,2)    AS [LastMax_DateCde], 

     Max(Date_Commande)       AS [Max_DateCde]

Resident [ORDER_T]

Group By Customer

;

Ne pouvant vous joindre ma table Order, vous trouverez ci-joint une table à charger pour faire vos test

[ORDER]:

LOAD * INLINE [

Order_Number, Customer, Date_Commande

1,AAA,01/08/2011     => Nouveau Client

2,BBB,05/08/2011     => Nouveau Client

3,CCC,07/08/2011     => Nouveau Client

4,DDD,09/08/2011     => Nouveau Client

5,EEE,15/08/2011     => Nouveau Client

6,BBB,05/09/2011

7,CCC,07/09/2011

8,DDD,09/09/2011

9,BBB,05/10/2011     => Client Loyal

                               => Client Perdu (AAA à la date du 01/11/2011) car pas de commande depuis 3 mois

10,CCC,07/11/2011

11,DDD,09/11/2011

....

25,AAA,01/12/2012  => Client Réactivé

...

                              => Client Perdu (AAA à la date du 01/03/2013) car pas de commande depuis 3 mois

40,AAA,01/03/2015 => Client Réactivé

Il n'est pas impossible que les variables définissant le type de client changent, pour cela il serait appréciable d'avoir des variables de ce type :

vClientReact = vient de passer une commande mais dernière commande date de plus de 365 jours

vClientPerdu = 90 jours sans commande

vClientLoyal = 1 commande sur 30 jours 3 fois de suite

D'avance merci pour vos réponses

Je me tiens à votre disposition si besoin

Tags (1)
1 Solution

Accepted Solutions
kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Boris,

Désolé je ne peux pas car je n'ai pas QLIKSENSE.

Voici le script :

SET ThousandSep=' ';

SET DecimalSep=',';

SET MoneyThousandSep=' ';

SET MoneyDecimalSep=',';

SET MoneyFormat='# ##0,00 €;-# ##0,00 €';

SET TimeFormat='hh:mm:ss';

SET DateFormat='DD/MM/YYYY';

SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

SET FirstWeekDay=0;

SET BrokenWeeks=1;

SET ReferenceDay=0;

SET FirstMonthOfYear=1;

SET CollationLocale='fr-FR';

SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';

SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';

SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';

SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';

SET vClientPerdu = 90;

SET vClientReact = 365;

SET vClientLoyal = 31;

[ORDER_T]:

LOAD * INLINE [

Order_Number, Customer, Date_Commande

1,AAA,01/08/2011

2,BBB,05/08/2011

3,CCC,07/08/2011

4,DDD,09/08/2011

5,EEE,15/08/2011

6,BBB,05/09/2011

7,CCC,07/09/2011

8,DDD,09/09/2011

9,BBB,05/10/2011

10,CCC,07/11/2011

11,DDD,09/11/2011

25,AAA,01/12/2012

40,AAA,01/03/2015];

[ORDER]:

LOAD *,

'A' as temp

RESIDENT [ORDER_T]

order by Customer, Date_Commande;

Drop table [ORDER_T];

TABLE :

Load Customer,

Date_Commande,

IF(Previous(Customer)=Customer,0,1) as NOUVEAU_CLIENT,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientPerdu), 1,0),0) as CLIENT_PERDU,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientReact), 1,0),0) as CLIENT_REACT,

If(Customer=Peek(Customer,-2) AND Date_Commande - Peek(Date_Commande) <= $(vClientLoyal) AND Peek(Date_Commande) - Peek(Date_Commande,-2) <= $(vClientLoyal) ,1,0) as CLIENT_LOYAL

RESIDENT [ORDER];

DROP Table [ORDER];

Kevin

9 Replies
kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Bonjour Boris,

Je n'ai pas le temps de détailler mais à mon avis utilise : IF + Count + aggr (par client)

Kevin

borislepage
New Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Merci pour la piste Kevin, je vais regarder et continuer à bosser sur le sujet en essayant ton idée

kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Exemple :

Client perdu :

=IF(Date(today(),'DD/MM/YYYY')-Date([LastMax_DateCde],'DD/MM/YYYY') > vClientPerdu, 1,0)


Kevin

kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Boris,

Voici la solution pour Client perdu. Fais pareil pour les autres.

Si besoin, reviens vers moi.

Kevin

kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Pour compléter :

IF(Previous(Customer)=Customer,0,1) as NOUVEAU_CLIENT,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientPerdu), 1,0),0) as CLIENT_PERDU,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientReact), 1,0),0) as CLIENT_REACT

J'essaie de te trouver une solution pour les clients loyaux.

Kevin

kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Boris,

Voici l'application finale avec le 4 flags :

IF(Previous(Customer)=Customer,0,1) as NOUVEAU_CLIENT,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientPerdu), 1,0),0) as CLIENT_PERDU,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientReact), 1,0),0) as CLIENT_REACT,

If(Customer=Peek(Customer,-2) AND Date_Commande - Peek(Date_Commande) <= $(vClientLoyal) AND Peek(Date_Commande) - Peek(Date_Commande,-2) <= $(vClientLoyal) ,1,0) as CLIENT_LOYAL

En espérant que cela réponde à ta demande.

Kevin

borislepage
New Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Merci beaucoup Kevin, je te fais un retour dans la journée

EDIT : Par contre si tu as la possibilité d'envoyé l'appli via un qvf ça m'arrangerais

kevinchevrier
Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Boris,

Désolé je ne peux pas car je n'ai pas QLIKSENSE.

Voici le script :

SET ThousandSep=' ';

SET DecimalSep=',';

SET MoneyThousandSep=' ';

SET MoneyDecimalSep=',';

SET MoneyFormat='# ##0,00 €;-# ##0,00 €';

SET TimeFormat='hh:mm:ss';

SET DateFormat='DD/MM/YYYY';

SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

SET FirstWeekDay=0;

SET BrokenWeeks=1;

SET ReferenceDay=0;

SET FirstMonthOfYear=1;

SET CollationLocale='fr-FR';

SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';

SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';

SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';

SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';

SET vClientPerdu = 90;

SET vClientReact = 365;

SET vClientLoyal = 31;

[ORDER_T]:

LOAD * INLINE [

Order_Number, Customer, Date_Commande

1,AAA,01/08/2011

2,BBB,05/08/2011

3,CCC,07/08/2011

4,DDD,09/08/2011

5,EEE,15/08/2011

6,BBB,05/09/2011

7,CCC,07/09/2011

8,DDD,09/09/2011

9,BBB,05/10/2011

10,CCC,07/11/2011

11,DDD,09/11/2011

25,AAA,01/12/2012

40,AAA,01/03/2015];

[ORDER]:

LOAD *,

'A' as temp

RESIDENT [ORDER_T]

order by Customer, Date_Commande;

Drop table [ORDER_T];

TABLE :

Load Customer,

Date_Commande,

IF(Previous(Customer)=Customer,0,1) as NOUVEAU_CLIENT,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientPerdu), 1,0),0) as CLIENT_PERDU,

IF(Previous(Customer)=Customer, If(Date(Date_Commande,'DD/MM/YYYY')-Previous(Date(Date_Commande,'DD/MM/YYYY')) > $(vClientReact), 1,0),0) as CLIENT_REACT,

If(Customer=Peek(Customer,-2) AND Date_Commande - Peek(Date_Commande) <= $(vClientLoyal) AND Peek(Date_Commande) - Peek(Date_Commande,-2) <= $(vClientLoyal) ,1,0) as CLIENT_LOYAL

RESIDENT [ORDER];

DROP Table [ORDER];

Kevin

borislepage
New Contributor III

Re: Application Qlik Sense suivis des clients [Nouveau / Réactivé / Perdu / Loyal]

Re bonjour Kevin,

J'ai correctement intégré ton code, à première vus cela fonctionne parfaitement.

Je dois passer par la phase de vérification des données, mais à première vus cela semble impeccable.

Encore une fois merci