Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
brunobertels
Master
Master

comment retrouver l'origine d'une prise de RDV si celui ci est "vendu"

Bonjour

je vais essayer de vous expliquer mon scénario

J'ai une base classée par date avec des RDV commerciaux et un résultat de RDV.

Le résultat peut être vendu , perdu , raté.

Lorsque un RDV est "Vendu" , parfois il est vendu des le premier RDV et parfois il a fallu plusieurs autres RDV précédemment.

Ces RDV peuvent être pris par des commerciaux ou des assistants commerciaux.

Aussi on me demande de retrouver pour chaque vendu qui a été a l'origine du premier RDV quand il y en a eu plusieurs et ceci en remontant 6 mois en arrière maximum.

Voici un petit échantillon en exemple : ici classé par entreprise et date mais normalement le classement est par date

       

MoisSemaineType AppelDatecommercialAssistantEntrepriseEtat
septembre39Sortant30 sept 2016 16:00LOICPHILIPPEDUPONTRATE
octobre42Sortant18 oct 2016 14:00LOICBEADUPONTRATE
octobre42Perso18 oct 2016 14:00LOICLOICDUPONT
octobre43Sortant27 oct 2016 09:00LOICSOPHIEDUPONTPERDU
novembre46Perso16 nov 2016 11:00LOICLOICDUPONTVENDU
novembre44Sortant03 nov 2016 11:00LAURALUDOANDRERATE
novembre45Perso08 nov 2016 16:00LAURALAURAANDREVENDU
octobre41Sortant13 oct 2016 11:00PIERREMICHELLEMARTINRATE
octobre43Perso28 oct 2016 11:00PIERREPIERREMARTINPERDU
novembre45Sortant09 nov 2016 16:00PIERREPIERREMARTIN

VENDU

Prenons l'entreprise DUPONT

le RDV est VENDU par le commercial LOIC le 16 novembre mais c'est l'assistant PHILIPPE qui est a l'origine du RDV :

Je cherche donc a pouvoir trouver cette valeur et faire un tableau final comme ceci en rajoutant un champs 1erRDV :

       

MoisSemaineType AppelDatecommercialAssistantEntrepriseEtat1er RDV
novembre46Perso16 nov 2016 11:00LOICLOICDUPONTVENDUPHILIPPE
novembre45Perso08 nov 2016 16:00LAURALAURAANDREVENDULUDO
novembre45Sortant09 nov 2016 16:00PIERREPIERREMARTINVENDUMICHELLE

J'imagine que la formule pour le champs 1er RDV est un savant mélange de Aggr , de fonction d'interenregistrement , de set analysis ...

Merci d'avance pour votre aide

Bruno

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Voici:

SET TimestampFormat='DD.MM.YYYY hh:mm';

T_Data:
LOAD * INLINE [
Mois, Semaine, Type Appel, Date, commercial, Assistant, Entreprise, Etat
septembre, 39, Sortant, 30.09.2016 16:00, LOIC, PHILIPPE, DUPONT, RATE
octobre, 42, Sortant, 18.10.2016 14:00, LOIC, BEA, DUPONT, RATE
octobre, 42, Perso, 18.10.2016 14:00, LOIC, LOIC, DUPONT,
octobre, 43, Sortant, 27.10.2016 09:00, LOIC, SOPHIE, DUPONT, PERDU
novembre, 46, Perso, 16.11.2016 11:00, LOIC, LOIC, DUPONT, VENDU
novembre, 44, Sortant, 03.11.2016 11:00, LAURA, LUDO, ANDRE, RATE
novembre, 45, Perso, 08.11.2016 16:00, LAURA, LAURA, ANDRE, VENDU
octobre, 41, Sortant, 13.10.2016 11:00, PIERRE, MICHELLE, MARTIN, RATE
octobre, 43, Perso, 28.10.2016 11:00, PIERRE, PIERRE, MARTIN, PERDU
novembre, 45, Sortant, 09.11.2016 16:00, PIERRE, PIERRE, MARTIN, VENDU
]
;


T_Vendu:
LOAD
RowNo() as Groupe_Rdv,
Entreprise,
// Fixe,
// Mobile,
Date as DateEnd,
AddMonths(Date, -6) as DateStart
Resident T_Data
Where Etat = 'VENDU';


Left Join (T_Data)
IntervalMatch(Date, Entreprise/*,Fixe,Mobile*/)
LOAD
DateStart,
DateEnd,
// Fixe,
// Mobile,
Entreprise
resident T_Vendu;


Left Join (T_Data)
LOAD *
Resident T_Vendu;

DROP Table T_Vendu;
DROP Fields DateStart, DateEnd;


Left Join (T_Data)
LOAD
Groupe_Rdv,
Min(Date) as Date,
1
as Premier_Rdv
Resident T_Data
Group By Groupe_Rdv;


Left Join (T_Data)
LOAD
Groupe_Rdv,
'VENDU'
as Etat,
Assistant as Assistant_origine
Resident T_Data
Where Premier_Rdv = 1;

DROP Field Premier_Rdv;

View solution in original post

13 Replies
flochi75
Creator III
Creator III

Bonjour Bruno,

quelle est ta clé de jointure qui te permet de savoir qu'il s'agit du même "dossier" client ?

Florent

sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

le plus compliqué dans ta demande est de définir les regroupement de rendez-vous.

Si j'ai bien compris, un regroupement de rendez-vous est défini par l'Entreprise et 6 mois depuis le dernier rendez-vous?

Y a-t-il par hasard un autre champ qui permet de regrouper ces rendez-vous plus facilement ?

Veux-tu considéré uniquement le dernier regroupement de rdv par entreprise ou tous les regroupement de rdv  ?

brunobertels
Master
Master
Author

Bonjour Florent

La meilleur clé que j'aurais c'est le numéro de téléphone. Je l'ai pas rajouté dans mon exemple.

De plus cas particulier j'ai un champ pour le fixe et un pour le portable il y a forcément un des deux de renseigné. Donc j'imagine qu'en plus il faudra d'abord vérifier si champs fixe est différent de null et sinon prendre le champs portable.

JE suis pas sur d'avoir le bon raisonnement mais j'imagine qu'il faut

1 crer une table intermédiaire avec tous les vendus

2 puis les prendre un par un et vérifier dans la table d'origine la première occurence de mois de 6 mois et reporter la Valeur contenu dans le champs assistant

3 A partir de la je devrais pouvoir affecter la vente au commercial si au premier RDV le nom du commercial = le nom de l'assistant ou affecter la vente à l'assistant si nom commercial est différent du nom assistant ( là çà se compliquera encore car le champs commercial =IntialPrénomNom jdupont et le champs assistant = Prenom NOM Jean DUPONT)

4 çà me permetra de calculer un taux de transfo global ( Nbr de vente sur nombre de RDV ) un taux de transfo commerce nbr de vendus commerce sur nbr de RDV commerce et un taux de transfo assistant nombre de vendus assistants sur nombre de RDV assistant.

Bruno

brunobertels
Master
Master
Author

Bonjour Sébastien

le plus compliqué dans ta demande est de définir les regroupement de rendez-vous.

oui je suis bien d'accord avec toi et vu mon faible niveau en codage je ne sais pas par quel bout prendre le problème

Si j'ai bien compris, un regroupement de rendez-vous est défini par l'Entreprise et 6 mois depuis le dernier rendez-vous?

oui exact , il est possible d'utiliser un champs nu de tel ( en fait 2 un pour mobile un pour fixe sachant qu'au moins un des deux est remplie )

Et je vois 2 approches :

1 partir de la date d'un vendu pour un client , remonter 6 mois en arrière et redescendre pour trouver le premier RDV pour prendre (pick()? ) la valeur présente dans le champs assistant

2 à partir de la date d'un vendu pour un client remonter dans la base pour  trouver le nombre de RDV précédent dans un interval de 6 mois et prendre le 1er pour reporter la valeur dans le champs assistant

Ensuite je devrais comparer les valeurs commercial et Assistant pour affecter la vente soit au commercial soit à l'assistant pour des calculs de taux de vente global , commerce et assistant.

Bruno

flochi75
Creator III
Creator III

Je ne suis pas sûr de la logique, mais une piste :

  1. en script :
    1. reprendrait les données des 6 derniers mois
    2. concaténerait les champs tel avec condition if(len(Fixe)=0,Mobile) as Client (ou comme tu veux mais c'est ta clé)
    3. je ne m'embêterai pas avec les noms commercial et assistant (mais les laisserai côte à côte dans le tableau)
    4. puis je ferai un min(Date) as 1Date group by Client
  2. en app :
    1. en dimension Client (au moins), peut être avec un if(Etat='VENDU')
    2. j'amènerai en expr le nom du 1er assistant avec if(Date=1Date,Assistant), ou mieux avec un set...

si ça marche, je m'attaquerai ensuite à la concordance des noms...

Florent

sfatoux72
Partner - Specialist
Partner - Specialist

Je pense que c'est bon

Community_1165796.png

Je ne suis pas certain que le Téléphone (Fixe / Mobile) soit la meilleur option pour regrouper les ventes, mais je les ai tout de même mis en commentaire dans le script de chargement si veux les utiliser.

Cela fait quelques manipulation, mais ça fonctionne (en tous cas sur l'échantillon founis)

brunobertels
Master
Master
Author

Bonjour

Merci pour ton retour. helas je ne peux pas ouvrir les fichier qlikwiew ; est ce que tu pourrais me faire un copier coller de ton script s'il te plait pour que je l'essaye sur qliksense

Merci d'avance

Bruno

sfatoux72
Partner - Specialist
Partner - Specialist

Voici:

SET TimestampFormat='DD.MM.YYYY hh:mm';

T_Data:
LOAD * INLINE [
Mois, Semaine, Type Appel, Date, commercial, Assistant, Entreprise, Etat
septembre, 39, Sortant, 30.09.2016 16:00, LOIC, PHILIPPE, DUPONT, RATE
octobre, 42, Sortant, 18.10.2016 14:00, LOIC, BEA, DUPONT, RATE
octobre, 42, Perso, 18.10.2016 14:00, LOIC, LOIC, DUPONT,
octobre, 43, Sortant, 27.10.2016 09:00, LOIC, SOPHIE, DUPONT, PERDU
novembre, 46, Perso, 16.11.2016 11:00, LOIC, LOIC, DUPONT, VENDU
novembre, 44, Sortant, 03.11.2016 11:00, LAURA, LUDO, ANDRE, RATE
novembre, 45, Perso, 08.11.2016 16:00, LAURA, LAURA, ANDRE, VENDU
octobre, 41, Sortant, 13.10.2016 11:00, PIERRE, MICHELLE, MARTIN, RATE
octobre, 43, Perso, 28.10.2016 11:00, PIERRE, PIERRE, MARTIN, PERDU
novembre, 45, Sortant, 09.11.2016 16:00, PIERRE, PIERRE, MARTIN, VENDU
]
;


T_Vendu:
LOAD
RowNo() as Groupe_Rdv,
Entreprise,
// Fixe,
// Mobile,
Date as DateEnd,
AddMonths(Date, -6) as DateStart
Resident T_Data
Where Etat = 'VENDU';


Left Join (T_Data)
IntervalMatch(Date, Entreprise/*,Fixe,Mobile*/)
LOAD
DateStart,
DateEnd,
// Fixe,
// Mobile,
Entreprise
resident T_Vendu;


Left Join (T_Data)
LOAD *
Resident T_Vendu;

DROP Table T_Vendu;
DROP Fields DateStart, DateEnd;


Left Join (T_Data)
LOAD
Groupe_Rdv,
Min(Date) as Date,
1
as Premier_Rdv
Resident T_Data
Group By Groupe_Rdv;


Left Join (T_Data)
LOAD
Groupe_Rdv,
'VENDU'
as Etat,
Assistant as Assistant_origine
Resident T_Data
Where Premier_Rdv = 1;

DROP Field Premier_Rdv;

sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Bruno,

Est-ce que le script fonctionne avec tes données ?