Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
Mois | Semaine | Type Appel | Date | commercial | Assistant | Entreprise | Etat |
septembre | 39 | Sortant | 30 sept 2016 16:00 | LOIC | PHILIPPE | DUPONT | RATE |
octobre | 42 | Sortant | 18 oct 2016 14:00 | LOIC | BEA | DUPONT | RATE |
octobre | 42 | Perso | 18 oct 2016 14:00 | LOIC | LOIC | DUPONT | |
octobre | 43 | Sortant | 27 oct 2016 09:00 | LOIC | SOPHIE | DUPONT | PERDU |
novembre | 46 | Perso | 16 nov 2016 11:00 | LOIC | LOIC | DUPONT | VENDU |
novembre | 44 | Sortant | 03 nov 2016 11:00 | LAURA | LUDO | ANDRE | RATE |
novembre | 45 | Perso | 08 nov 2016 16:00 | LAURA | LAURA | ANDRE | VENDU |
octobre | 41 | Sortant | 13 oct 2016 11:00 | PIERRE | MICHELLE | MARTIN | RATE |
octobre | 43 | Perso | 28 oct 2016 11:00 | PIERRE | PIERRE | MARTIN | PERDU |
novembre | 45 | Sortant | 09 nov 2016 16:00 | PIERRE | PIERRE | MARTIN | 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 :
Mois | Semaine | Type Appel | Date | commercial | Assistant | Entreprise | Etat | 1er RDV |
novembre | 46 | Perso | 16 nov 2016 11:00 | LOIC | LOIC | DUPONT | VENDU | PHILIPPE |
novembre | 45 | Perso | 08 nov 2016 16:00 | LAURA | LAURA | ANDRE | VENDU | LUDO |
novembre | 45 | Sortant | 09 nov 2016 16:00 | PIERRE | PIERRE | MARTIN | VENDU | MICHELLE |
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
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;
Bonjour Bruno,
quelle est ta clé de jointure qui te permet de savoir qu'il s'agit du même "dossier" client ?
Florent
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 ?
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
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
Je ne suis pas sûr de la logique, mais une piste :
si ça marche, je m'attaquerai ensuite à la concordance des noms...
Florent
Je pense que c'est bon
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)
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
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;
Bonjour Bruno,
Est-ce que le script fonctionne avec tes données ?