Académique Documents
Professionnel Documents
Culture Documents
Théme
Je tiens a remercier mon encadreur Dr Z.ALIMAZIGHI pour ses précieux conseils , son
sens de la pédagogie, sa confiance, le temps qu’elle m’a consacré et ses orientations.
Mes vifs remerciements vont également aux membres du jury pour l’intérêt qu’ils ont
porté a notre projet en acceptant d’examiner mon travail et l’évaluer.
Je remercie également ma mère pour son amour et son soutien inconditionnel qui m’a
permis de réaliser mes études et par conséquent ce mémoire.
Sans oublié mes cousins Omar El hadj , Hafid , Alla et Aymen qui m’ont
aidé , remonté le morale et et supporté dans toutes les situations.
1
Table des matières
I.2 Facebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
I.4.2 Sendinblue : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2
I.8 Marketing automation : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
I.8.1 Zapier : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
I.8.2 IFTTT : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
I.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
II L’informatique décisionnelle 17
II.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
II.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3
III.2.1 Community managers . . . . . . . . . . . . . . . . . . . . . . . . . . 25
III.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
IV Conception 29
V Réalisation 39
V.1.1 QGis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
V.1.2 QT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4
V.1.3 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
V.1.4 RethinkDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
V.1.5 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
V.1.7 DBeaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5
Table des figures
I.1 L’utilisation des réseaux par les internautes (Janvier 2021) (meta-chart.com) 3
6
IV.3 la création d’un profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7
5.21 L’importation des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8
Liste des acronymes
BI : Business Intelligence
B2B : Business to business
Ads : Advertising (Publicité)
CM : Community managment
CRM : Contact Ressources management
SMA : Social médial advertising
IFTTT : If this than that
ETL : Extract Transform Load
DW : DataWarehouse (Entrepôt de données)
SGBD : Système Gestion de Base de Données
API : Application Programming Interface
SQL : structured Query Language
SDK : Software developement kit
NoSQl : Not Only Structured Query Language
9
Introduction générale
Inbound Marketing Algérie est une entreprise B2B spécialisée dans l’inbound marke-
ting qui a pour but de fournir des solutions innovantes et créatives de communication di-
gitale. L’entreprise propose des applications mobiles , production de vidéo , publicités et
hébergement de sites web.
Pour faire face a ses concurrents, IMA a besoin de développer un système décisionnel
pour avoir une vue globale sur les données des entreprise (Business Intelligence), tout en
automatisant son flux de données (Marketing automation).
Le travail réalisé dans ce mémoire est organisé en cinq chapitres. Les deux premiers sont
consacrés à des généralités sur Le marketing, la Business Intelligence et l’automatisation
du marketing. Le suivant sera consacré à l’analyse de l’existant , voir les points forts et
faibles de l’entreprise,et proposer une solution pour l’améliorer.Les deux derniers chapitres
sont consacré pour la conception et la réalisation du nouveau système suivi d’une conclusion
finale sur le développement de ce projet.
1
Chapitre I
Selon la 2ème édition du Baromètre Social Selling menée par La Poste Solutions
Business et l’agence digitale Intuitif, les réseaux sociaux n’ont jamais autant joué leur rôle
d’influence qu’aujourd’hui, et ce même en Business to Business.
D’après cette étude, le nombre de décideurs ayant acheté un produit ou un service suite à
une sollicitation sur les réseaux sociaux a été multiplié par trois en 2017 et plus de la moitié
des décideurs B2B reconnaissent avoir déjà été influencés par un article ou une publication
sur les réseaux sociaux au moment d’acheter. . . En 2018, 6% des répondants déclaraient
acheter un produit ou un service suite à une sollicitation via les réseaux sociaux, ils sont 21%
en 2019.
Les moyens indirects, comme la lecture d’articles de blogs et de postes, sont d’autant plus
influents : 57% des décideurs déclarent avoir déjà été poussés à l’acte d’achat B2B, par un
article ou une publication sur les réseaux sociaux (+ 1 point par rapport à 2018).
Les réseaux sociaux constituent un levier particulièrement efficace chez les commerciaux :
71% des décideurs interrogés à cette fonction estiment que les réseaux sociaux les aident dans
leur business. Aujourd’hui, les achats réalisés suite à des prises de contact sur les réseaux
concernent essentiellement les activités de services. Ils représentent 2/3 d’entre eux.
Les softwares et produits matériels arrivent ensuite. En termes de montants, 88% des
ventes s’élèvent encore à moins de 10K€. [1]
2
I.2 Facebook
Facebook est un réseau social en ligne qui permet à ses utilisateurs de publier des images,
des photos, des vidéos, des fichiers et documents, d’échanger des messages, joindre et créer
des groupes et d’utiliser une variété d’applications sur une variété d’appareils.[2]
* Troisième site web le plus visité au monde selon Alexa (assistante vocale d’ Amazone).
Figure I.1 – L’utilisation des réseaux par les internautes (Janvier 2021) (meta-chart.com)
Selon e-marketing.fr, un lead est un prospect sur lequel l’affilieur dispose d’assez d’in-
formations pour le recontacter et le convertir en client. .
3
I.3.2 Facebook Ads :
Suite à une audience potentielle colossale pour les annonceurs, couplée à une force de
ciblage sans égal, Facebook ads est une arme de génération de leads massive très prisée des
entreprises. Et, alors que les professionnels du marketing sont constamment en recherche de
nouvelles façons de générer du lead qualifié, Facebook propose dans cette optique spécifique
un outil extrêmement efficace Facebook leads Ads.
[3]
L’objectif des Facebook Lead Ads est avant tout de récupérer les informations personnelles
de contact de prospects potentiels.
Dans un sens plus restrictif, le CRM peut désigner l’ensemble du dispositif informatique
consacré à la gestion de la relation client. Le CRM est alors la solution informatique per-
mettant de gérer l’ensemble des informations relatives aux clients et prospects et l’ensemble
des interactions menées avec ces individus (contacts entrants et sortants). Les outils de cam-
pagnes marketing peuvent alors être connectés à la solution de CRM ou y être intégrés dans
une logique de suite Marketing ou suite CRM.[4]
4
I.4.2 Sendinblue :
Sendinblue est une entreprise française qui édite une suite de logiciel ”software as a
service” à destination des petites et moyennes entreprises. Elle permet de recontacter des
clients par courriers électroniques ou SMS.
L’inbound marketing repose sur une stratégie de création de contenu qui permet d’attirer
des visiteurs afin de les convertir en leads puis en clients, grâce à des techniques telles que le
marketing automation, l’engagement sur les réseaux sociaux et la création de contenu. Cette
stratégie marketing est facilitée par l’intégration et l’adoption d’outils de visualisation tout-
en-un qui permettent de prouver le retour sur investissement (ROI) des efforts marketing.
Le contenu :
Le contenu souligne l’expertise et l’identifie comme un acteur référent dans son domaine.
Il se compose d’articles de blog, vidéos, infographies.
5
Le référencement naturel ou SEO :
C’est l’une des techniques mises en œuvre pour améliorer la position d’un site web sur
les pages de résultats des moteurs de recherche SEO (Search engine optimizer) et Inbound
sont inséparables, La création de contenus est inutile si les règles de base de référencement
ne sont pas respectées pour être référencé sur Google afin que les internautes puissent vous
trouver.
Les newsletters :
Une newsletter est une lettre d’information envoyée régulièrement par e-mail à une liste de
diffusion, c’est-à-dire à des abonnés. En marketing, une newsletter est à vocation commerciale.
Elle peut servir à informer les abonnés de certaines promotions ou opérations commerciales
spéciales, ou bien comporter un contenu éditorial informatif.
L’influence et les relations publiques permettent de construire une image auprès des per-
sonnes influentes et de leurs communautés. Un travail qui prend nécessite une grande maı̂trise
des codes sociaux, mais également des normes qui régissent le marketing d’influence.
Les réseaux sociaux et le SMA (Social Media Advertising) constituent un levier important.
Il existe même des formats publicitaires spécifiquement orientés vers la génération de leads.
Avec un bouton d’appel à l’action, l’internaute peut s’inscrire à une newsletter ou remplir
un formulaire en quelques secondes grâce aux informations personnelles déjà partagées.
6
Figure I.4 – Exemple d’un formulaire
7
I.6 Les étapes de l’inbound marketing :
Afin d’attirer ces visiteurs sur un site web, plusieurs outils et techniques peuvent être
utilisés, comme le, la création de contenu ou le partage sur les réseaux sociaux. Les réseaux
sociaux sont des endroits stratégiques pour partager du contenu, tel qu’un article de blog.
Dans cette troisième étape, il s’agit d’accompagner le prospect dans son processus de
décision jusqu’à la vente, pour en faire un client.
C’est une étape qui peut combiner des moyens traditionnels (téléphone, rendez-vous, etc.)
et digitaux (newsletter, marketing automation, etc.).
Les réseaux sociaux ne sont plus simplement utilisés pour attirer des visiteurs sur un
8
site web mais également pour entretenir une relation avec une audience. De nombreuses
marques ont par exemple mis en place un support client sur les réseaux sociaux. Pour attirer
naturellement les visiteurs vers votre marque, il vous faut un contenu informatif, de qualité,
intéressant, mais pas intéressé, qui sera naturellement trouvé par le consommateur à travers
les moteurs de recherche et les réseaux sociaux.
Les réseaux sociaux ne sont plus simplement utilisés pour attirer des visiteurs sur un
site web mais également pour entretenir une relation avec une audience. De nombreuses
marques ont par exemple mis en place un support client sur les réseaux sociaux. Pour attirer
naturellement les visiteurs vers votre marque, il vous faut un contenu informatif, de qualité,
intéressant, mais pas intéressé, qui sera naturellement trouvé par le consommateur à travers
les moteurs de recherche et les réseaux sociaux.[5]
9
Figure I.6 – La différence entre l’outbound et l’inbound marketing
Le marketing automation est devenue une aide précieuse dans la gestion et l’évolution
d’un site internet, mais également pour de nombreuses actions en marketing digital B2B
quand il s’agit de générer des leads.
Si on peut le traduire par l’ensemble des tâches automatisées au sein du marketing digital,
visant à optimiser et à générer de la visibilité, ainsi que des leads en marketing B2B, il est
plus complet et complexe qu’il n’y parait.
10
I.8.1 Zapier :
Zapier est un outil qui vous aide à automatiser les tâches répétitives entre deux ou plu-
sieurs applications - aucun code n’est nécessaire. Lorsqu’un événement se produit dans une
application, Zapier peut dire à une autre application d’effectuer (ou de faire) une action
particulière[8]
I.8.2 IFTTT :
Lancé en 2010, IFTTT est un service d’interconnexion dans le cloud. Cet outil facile
d’utilisation met en relation les services et plateformes les plus populaires sur le web, ainsi
que de nombreux objets connectés, et déclenche des actions automatisées quand un événement
se produit. D’où le nom du site, qui signifie ”If This Then That”[9]
Introduit pour la première fois par Roy Fielding en 2000, RESTful est un style architec-
tural et une méthodologie fréquemment utilisée dans le développement de services Internet,
tels que les systèmes hypermédia distribués.
11
Figure I.7 – Fonctionnement d’une API REST :
Avant de plonger dans les principes directeurs de la conception des API REST, discutons
brièvement de deux termes clés client et ressource :
Le client : le matériel ou le logiciel qui utilise l’API rendu accessible par le serveur. Par
exemple, lorsque vous visitez le site Web de Facebook, votre navigateur est le client qui
appelle l’API Facebook et utilise les données renvoyées pour afficher des informations sur
votre écran.
Une ressource : peut être n’importe quel objet sur lequel l’API peut offrir des informations.
Par exemple, dans le cas d’une API Facebook, une ressource peut être un utilisateur, un lead
ou tout autre type de média comme une image. Chaque ressource a un identifiant distinct
qui peut être un nom ou un numéro.[10]
La ressource la plus intéressante pour L’entreprise IMA est les prospects des formulaires
Facebook.
12
Figure I.8 – Un prospect récupéré par un a un appel API
La plupart des points de terminaison (le lien d’une ressource API et aussi appelé endpoint)
qui retournent une liste d’entités devront avoir une sorte de pagination. Sans pagination, une
simple recherche pourrait renvoyer des millions, voire des milliards de résultats, provoquant
un trafic réseau superflu.
La pagination nécessite un ordre implicite. Par défaut, il peut s’agir de l’identifiant unique
de l’élément, mais il peut s’agir d’autres champs classés tels qu’une date de création.[11]
La pagination diffère d’une api a une autre, dans l’exemple de Facebook, l’accès à une page
suivante est obtenu en rajoutant le paramètre after avec sa valeur de la page actuelle aux
paramètres de la requête api get ou post, la valeur du champs after est vide dans la dernière
page de l’api.
13
Figure I.9 – Modéle de pagination de l’api Sendinblue
Un Webhook est une notification d’événement transmise via HTTP. Il est généralement
envoyé sous la forme d’une requête POST, qui contient des données ”enregistrées” d’une
ressource spécifique.
La requête POST est intercepté par un URL appelé callback url,et ses données sont ana-
lysées et traités par le script correspondant sur un le serveur web. Le script peut être écrit
dans l’un des nombreux langages de script côté serveur, tels que Python, Il peut effectuer
une ou plusieurs actions, telles que sauvegarder les données dans un répertoire (CRM par
exemple), envoyer les informations par courrier électronique à une adresse spécifique ou ren-
voyer de nouvelles données à la source.
Les Webhook sont un outil efficace, mais ils nécessitent une connexion Internet entre la
source de données et le serveur Web pour fonctionner. En outre, un script doit être présent
sur le serveur au niveau de l’URL de destination et il doit être capable de reconnaı̂tre et
d’analyser les données POST. Si la connexion Internet ou le script n’est pas disponible, le
Webhook ne fonctionnera pas.[12]
Sans webhooks, le système ou l’application doit envoyer des requêtes régulièrement a une
API pour avoir de nouvelles données, et cela met une grande charge sur le serveur si le nombre
d’utilisateurs augmente. Donc l’utilité des webhooks et de diminuer la charge en envoyant
une notification à l’application au moment où une nouvelle donnée demandée par l’utilisateur
arrive.
14
Figure I.10 – l’utilité des Webhooks [13]
Selon Google trends, les nouvelles entreprises commencent de plus en plus à développer
eux-mêmes leurs outils de marketing automation plutôt que d’utiliser un outil comme IFTTT
, automate.io ou zapier car les tarifications de ces derniers ne sont ni équilibrées ni accessible.
Ce qui n’aide pas les petites et les nouvelles entreprises. De plus les webhooks et les APIs
sont de plus en plus utilisés car on remarque une amélioration des documentations des ses
derniers.
15
Figure I.11 – l’évolution des webhooks (Google trends)
I.9 Conclusion
16
Chapitre II
L’informatique décisionnelle
II.1 Introduction
améliorer la prise de décision en se basant sur des données traitées par des machines et des
algorithmes.[14]
17
Figure II.1 – composantes d’une solution BI [15]
II.3.1 Définition
Il recueille des données de sources variées et hétérogènes dans le but principal de soutenir
l’analyse on line et faciliter le processus de prise de décision. En matière d’intégration dans le
système de données existant, le fonctionnement du Datawarehouse est basé sur le processus
ETL permettant de charger les données issues des différentes applications.
• Orienté sur le sujet : Organisé par thème, peut être utilisé pour n’importe quel secteur
de l’entreprise.
• Intégré :les données récupérées de sources hétérogènes internes ou externes sont intégrées
au Datawarehouse. Pour cela, il est nécessaire de les mettre en forme et de les unifier pour
garantir une certaine cohérence.
• Variante temporelle : Les anciennes données sont également conservées dans le Data-
warehouse, contrairement à certains des systèmes transactionnels traditionnels où seules les
données les plus récentes sont stockées. Cela permet de visualiser l’évolution dans le temps
des différentes données.
• Non volatile : Les données une fois stockées dans l’entrepôt de données ne peuvent
jamais être modifiées.
18
II.3.2 Concept de Datamart
Il est conçu pour accéder plus facilement à des données spécifiques. En entreprise, les
informations d’un Datamart ciblent un métier. Il existe, par exemple, des Datamarts com-
merciaux constitués de données ciblées, organisées et regroupées. [16]
Dans un Datawarehouse (et au niveau de chaque Datamart), les données et leurs relations
sont organisées suivant un modèle de données spécifique. Le choix du modèle de données
définit le design du Datawarehouse. Il existait trois modélisations possibles :
• La modélisation en étoile,
• La modélisation en flocons,
• La modélisation en constellation.
Les trois structures reposent sur deux types de tables, tables de dimensions et tables de
faits
Tables de dimensions
Une dimension est une table qui contient les axes d’analyse (les dimensions) selon lesquels
on veut étudier des données observables (les faits) qui, soumises à une analyse multidimen-
sionnelle, donnent aux utilisateurs des renseignements nécessaires à la prise de décision.
Tables de faits
Une table de fait est une table qui contient les données observables (les faits) que l’on
possède sur un sujet et que l’on veut étudier, selon divers axes d’analyse (les dimensions).
Les faits , dans un entrepôt de données, sont normalement numériques, puisque d’ordre
quantitatif. Il peut s’agir du montant en argent des ventes, du nombre d’unités vendues d’un
produit, etc.
19
II.3.4 La modélisation en étoile
Le modèle en étoile est le modèle le plus simple et celui qui est le plus couramment utilisé
dans le design des Datawarehouses. Le schéma ci-dessus permet de comprendre l’origine de
cette appellation en étoile .
20
II.5.1 Fonctionnement des ETL
Extraction
L’objectif d’ETL est de produire des données propres, faciles d’accès et qui peuvent être
exploitées efficacement par l’analytique, l’informatique décisionnelle et/ou les opérations com-
merciales. Les données brutes peuvent être extraites de différentes sources.
Transformation
L’étape de transformation du processus ETL est celle des opérations les plus essentielles.
L’opération la plus importante de l’étape de transformation consiste à appliquer aux données
brutes les règles internes de l’entreprise de manière à répondre aux exigences en matière
de reporting : les données brutes sont nettoyées et converties aux formats de rapport qui
conviennent.
Chargement
La dernière étape du processus ETL standard consiste à charger les données extraites et
transformées dans leur nouvel emplacement. En général, les Datawarehouse supportent deux
modes pour le chargement des données : chargement complet et chargement incrémentiel.[15]
Les données d’un entrepôt de données ne sont pas compréhensible par un utilisateur final,
pour cela,La visualisation de données est une couche supplémentaire est indispensable pour
l’informatique décisionnelle.
La visualisation de données est la science de représenter des données sous une forme
visuellement compréhensible, qu’il s’agisse d’histogrammes , cartographie ou tableaux. Le
résultat final est généralement représenté dans un tableau de bord regroupant les différents
formes. Elle permet aux entreprises de faire face au changements de tendances rapidement
et avec une grande précision.
21
Figure II.3 – Exemple d’un tableau de bord
22
II.7 Outils connus de la business intelligence
Les outils décisionnels s’intègrent de plus en plus dans les entreprises, et de plus en plus
d’outils sont développés pour faciliter cette intégration. Les outils les plus utilisés sont listés
dans cette section.
SGBD/Datawarehouse
— Oracle
— MS SQL Server
— IBM DB2
— Sybase
— MySQL
— PostgreSQL
ETL
Visualisation de données
— PowerBI
— QliKview
— Tableau Software
— Apache Superset (open source)
2.8 Conclusion
Dans ce chapitre on a présenté les aspects les plus importants de l’informatique décisionnelle,
les schémas d’un entrepôt de données, les ETLs ainsi que la visualisation de données et son
utilité. Ensuite on a finalisé ce chapitre par une liste d’outils qui peuvent être utilisé pour
construire un système décisionnel complet.
23
Chapitre III
Étude de l’existant
Introduction
Le but de l’analyse de l’existant est la recherche des points forts et des points faibles du
système existant. Ainsi, l’analyse de l’existant fait l’état de lieux du système actuel.
24
Community manager : gestion de la communauté d’une entreprise cliente (répondre
aux messages et commentaires des réseaux sociaux, élaborer de nouvelles publications et
posts).
Suite à des publications Facebook, les clients peuvent appeler directement au lieu de
remplir les formulaires,puis les Community managers les insèrent manuellement dans le CRM.
Pour chaque nouveau Produit/service d’une entreprise cliente, Inbound marketing Algérie
crée une landing page.
La landing page est hébergée dans un serveur dédié d’Inbound marketing Algérie.
les formulaires de ces landing pages sont connecté a l’api Sendinblue et les données sont
automatiquement envoyées vers le CRM.
En utilisant Facebook Ads, on peut attacher un formulaire a une publication, une fois
qu’un internaute clique, une fenêtre ”popup” s’affiche avec les informations à remplir. Ces
prospects sont les plus intéressants pour l’entreprise car ils permettent l’utilisation de l’une
des fonctionnalités Facebook Facebook Lookalike ou audiences similaires . Son objectif
est de toucher de nouvelles personnes susceptibles d’être intéressées par votre entreprise en
raison de leurs points communs avec vos meilleurs clients actuels.
25
Figure III.1 – Fonctionnement actuel de l’entreprise
26
III.7 Besoins non fonctionnels
L’entreprise vise à développer une application qui permet la communication entre les
listes Sendinblue et les formulaires de Facebook en connectant les deux via deux technologies
différentes.
Chaque entreprise peut utiliser plus d’un seul formulaire Facebook et plus d’une seule liste
Sendinblue. L’application va permettre de connecter un formulaire Facebook a une liste Sen-
dinblue et transmettre les nouveaux prospects après traitement pour assurer la compatibilité
des données.
L’application doit récupérer les prospects envoyés depuis les landing pages et les CM les
ajouter aux prospects des formulaires Facebook et les préparer pour les envoyer à un entrepôt
de données.
Cette centralisation de données rapporte à l’entreprise d’avoir une vue globale, et permet
de comparer les méthodes utilisées pour en extraire la plus adaptée pour ses clients.
Le schéma suivant montre les modifications du processus existant pour son amélioration.
27
Figure III.2 – Le nouveau système à implémenter
III.9 Conclusion
Á l’issue de cette étape j’ai exprimé les objectifs attendus du futur système à concevoir,Ce
qui va nous permettre de passer à la prochaine étape intitulée ”conception” que nous allons
détailler dans le chapitre suivant.
28
Chapitre IV
Conception
Introduction
La recherche ciblée des besoins fonctionnels, est considérée nécessaire avant d’entamer la
conception afin d’obtenir une vue globale sur les exigences du système.
29
Le système est composé d’une application bureau qui permet de créer des profils et envoyer
les prospects et un serveur contenant l’entrepôt de données et l’outil de visualisation de
données
30
Figure IV.2 – Diagramme de cas d’utilisation
L’ajout d’un profil est l’étape qui se fait juste après la création d’une liste dans le CRM
Sendinblue et le paramétrage d’une publicité Facebook, On récupère les jetons des deux apis
(Facebook API et Sendinblue API) et les intègre dans l’application.
On choisit le type d’importation des prospects (par lot / Streaming) ; L’application sau-
vegarde le profil dans une BDD Nosql (rethinkDB) et l’ajoute à la dimension f2sib profile
dans l’entrepôt de données.
31
Figure IV.3 – la création d’un profil
Le mappage de données consiste à extraire des champs de données d’un ou plusieurs fi-
chiers source et à les faire correspondre à leurs champs cibles associés dans la destination.
L’intégration de données ou le mappage ETL permet de consolider les données en les extra-
yant, en les transformant et en les chargeant dans un entrepôt de données. La première étape
d’ETL est le mappage des données. Ces données mappées peuvent ensuite être utilisées pour
produire des informations pertinentes susceptibles d’améliorer l’efficacité de l’entreprise.
Une fois que l’administrateur sélectionne un profil, L’application récupère les données de
la base de données des profils, qui contient les jetons pour les API Facebook et Sendinblue,
L’application envoie une requête a L’api Facebook pour récupérer les nouveaux prospects
générés par le formulaire avec l’identifiant formulaire id du profil sélectionne,
32
L’application récupère ensuite le jeton API Sendinblue de la base de données des profils,
associe les colonnes Facebook aux colonnes qui vont être envoyés vers Sendinblue.
L’intégration en streaming
Si le mode streaming a été sélectionné lors de la création du compte, les prospects générés
par le formulaire Facebook seront automatiquement envoyés vers le CRM en temps réel.
Facebook envoie une notification au serveur web de l’application SIB intégration contenant
l’identifiant du nouveau prospect généré ainsi que le formulaire qui l’a généré.
33
Figure IV.5 – Récupération des prospects depuis Facebook en temps réel
34
IV.3.1 Diagramme de séquence Alimentation du Datawarehouse
Lors de l’importation des données, L’application stock les prospects des trois sources les
regroupe selon les dimensions mentionnées précédemment, et les prépare pour les intégrer
dans l’entrepôt de données.
Si le profil n’existe pas, l’application envoie une requête d’insertion du profil avant de
passer à l’alimentation.
35
IV.4 Conception de l’entrepôt de données
L’opérateur peut aider le décideur à choisir un seul opérateur à utiliser pour toute l’en-
treprise ou bien choisir un seul opérateur pour une région donnée.
Les dimensions Âge et sexe ne sont pas intéressantes pour toutes les entreprises mais pour
la plupart c’est indispensable donc il a fallu les intégrer,
Âge
Sexe
Opérateur
36
Profil
Chaque entreprise peut avoir plusieurs formulaires Facebook et plusieurs liste CRM as-
sociés, L’analyse de cette dimension nous donne des prédictions sur les stratégies de publicités
à suivre dans le futur selon la stratégie qui a marché le mieux pour l’entreprise
les entreprises se basent sur une valeur spéciale que l’utilisateur doit introduire : Pour
une entreprise de réparation de téléphone par exemple, en plus de la wilaya et le numéro de
téléphone du client, la panne est l’élément le plus important du prospect donc c’est l’élément
extra pour cette entreprise
37
Modèle logique
Maintenant qu’on a vu les interaction entre les composantes du système , voici le schéma
détaillé qui les regroupe
Conclusion
Après avoir identifier les dimensions à utiliser et l’acheminement des données des données,
on peut entamer le prochain chapitre qui traitera l’environnement et les outils utilisés pour
implémentation du système ainsi que les résultats.
38
Chapitre V
Réalisation
Introduction
Après avoir mené à terme les différentes phases de conception du projet. on est en mesure de
commencer la partie réalisation avec une vision claire et précise.
Dans ce chapitre nous allons présenter les outils utilisés pour le développement du système
”F2SIB” (Facebook 2 Sendinblue), les services web et les interfaces importantes de l’appli-
cation.
V.1.1 QGis
QGIS fait partie des projets de la Fondation Open Source Geospatial, et logiciel est intégré
à la liste des logiciels libres préconisés par l’État français dans le cadre de la modernisation
globale de ses systèmes d’informations (S.I.). [19]
V.1.2 QT
39
de télécommunication Nokia puis, en 2012, par la société de logiciels finnoise Digia. Depuis
2014, le développement est confié à la filiale de Digia, The Qt Company. Qt est programmé
en C++ et est pris en charge par différentes plateformes 32 et 64 bits.[20]
V.1.3 Docker
La technologie Docker utilise le noyau Linux et des fonctions de ce noyau pour séparer les
processus afin qu’ils puissent s’exécuter de façon indépendante, il est associé à un modèle de
déploiement basé sur une image. Il est ainsi plus simple de partager une application ou un
ensemble de services, avec toutes leurs dépendances, entre plusieurs environnements. Docker
permet aussi d’automatiser le déploiement des applications (ou d’ensembles de processus
combinés qui forment une application) au sein d’un environnement de conteneurs.[21]
V.1.4 RethinkDB
RethinkDB est la première base de données évolutive JSON open source, conçue à partir
de zéro pour le Web en temps réel. Elle inverse l’architecture de base de données traditionnelle
en exposant un nouveau modèle d’accès passionnant - au lieu d’interroger les modifications, le
développeur peut demander à RethinkDB de transmettre en continu les résultats de requête
mis à jour aux applications en temps réel. L’architecture push en temps réel de RethinkDB
réduit considérablement le temps et les efforts nécessaires pour créer des applications en
temps réel évolutives.[22]
V.1.5 PostgreSQL
Superset fonctionne en tant qu’application Web sur les principaux navigateurs internet,
c’est un logiciel développé en Python et qui utilise la librairie Flask comme framework Web.
[24]
40
V.1.7 DBeaver
DBeaver est un outil de base de données multiplateforme gratuit pour les développeurs,
les programmeurs SQL, les administrateurs de bases de données et les analystes. Il prend en
charge toutes les bases de données courantes : MySQL, PostgreSQL, SQLite, Oracle SQL Ser-
ver, Sybase, Teradata, Firebird etc. DBeaver est un outil de base de données universel gratuit
open source. Publié la première fois en 2010, l’outil possède de multiples caractéristiques à
savoir : une interface utilisateur conviviale permet l’écriture de diverses extensions, prend en
charge toutes les bases de données partageant le pilote JDBC (Java Database Connector).[25]
Docker n’est pas dans les dépôts officiels d’Ubuntu 18.04. Cependant on peut l’installer
en rajoutant les dépôts de docker à notre serveur, les mettre à jour et lancer la commande
d’installation.
# l'installation :
sudo apt install docker-ce
41
Figure V.1 – La vérification du fonctionnement de docker
r.db('f2sib').tableCreate('profiles')
42
Figure V.2 – L’interface web rethinkDB
On se base sur la conception pour créer l’entrepôt de données, la dimension extra est
dynamique et ne contient qu’un seul champ donc on a décidé de l’introduire comme champ
de table de faits.
-p 5432 :5432 : pour exposer le port 5432 qui est le port de connection aux base de données
Postgres par défaut du conteneur au port 5432 du serveur
43
Figure V.3 – Connecter Postgres à DBeaver
44
Figure V.5 – Schéma de l’entrepôt de données
Scripts et fonctions
Lors d’une insertion dans la table de faits, si on ré-alimente l’entrepôt de données deux fois
le même jour, on peut retrouver des tuples contenant la même valeur d’une clé primaire
existante dans la base de données. Pour gérer cette redondance on utilise la commande ”ON
CONFLICT” qui permet de mettre en place un scénario alternatif dans le cas d’un conflit
de clé primaire, le scénario alternatif dans ce cas est l’ajout du nombre de prospect au tuple
existant.
exemple d’utilisation de la commande ”ON CONFLICT”, EXCLUDED fait référence au
tuple qu’on va exclure
45
L’insertion se fait d’une manière automatique ,avant l’insertion dans la table de faits, un
trigger se déclenche vérifiant si le champs temps id existe dans la table de dim temps si ce
n’est pas le cas, il l’ajout et découpe le champs pour en extraire le mois et l’année
--la fonction qui permet d'extraire le mois et l'année d'un jour donnée
L’insertion dans f2sib profile se fait au moment de l’ajout d’un profil et la gestion des
conflits se gère de la même manière que la table de faits et le scénario alternatif est de ne
rien faire dans le cas d’un conflit au lieu d’envoyer un message d’erreur.
Afin de pouvoir utiliser l’Api de Facebook via une application externe, on doit d’abord
transformer un compte Facebook en un compte développeur en suivant les étapes du lien
suivant : https ://developers.Facebook.com
46
Une fois le compte activé, on peut créer une application Facebook en spécifiant le domaine
d’utilisation et des informations générales concernant cette application. cette application
permet aux utilisateurs Facebook de générer des jetons d’api.
47
— ads management
— pages read engagement
— pages show list
— pages manage metadata
Pour avoir ces autorisations, une demande doit être envoyée à Facebook en expliquant
leurs rôle dans L’application externe, cette étape est appelée l’App Review et prend entre 10
et 15 jours.
une fois l’APP Review terminé par l’équipe Facebook, on peut voir les accès approuvées
à l’application.
On peut maintenant envoyer des appels à l’api de Facebook pour récupérer les données
de prospects avec des requêtes http avec un langage de programmation, des outils comme
Postman ou l’outil de test proposé par Facebook Graph api, le point de terminaison des leads
d’un formulaire est :
https ://graph.Facebook.com/v10.0/FORULAIRE ID /leads
avecleparamètretoken = jeton
et en Mai 2021, Facebook a rajouté la possibilité de filtrer les données avant de les
récupérer via l’api la syntaxe contient 3 paramètres : fiels,operator,et value on s’intéresse au
champs created time avec l’opéraateur GREATER THAN et la valeur égale à la dernière
date
48
Figure V.10 – filtrage des prospects
pour récupérer les champs d’un formulaire on utilise le point de terminaison suivant :
https ://graph.Facebook.com/v10.0/FORMULAIRE IDaveclesparamètres : f ields = questions{keys}etto
jeton
Lavaleurduparamètref ieldpermetdef iltrerleschampsetlessouschampsdelarequête
Le même point de terminaison est utilisé pour avoir le nom du formulaire en changeant
le paramètre field de fields=questions à fields=name
49
Figure 5.13 – Autoriser les webhooks
Pour recevoir les données des formulaires en temps réel, on s’abonne à la terminaison
leadgen ,et on prépare un serveur pour capturer les notifications du webhook.
Sendinblue offre un service api simple à utiliser ,sans autorisations ou l’utilisateur peut
retirer son jeton depuis son compte et s’en servir pour envoyer des requêtes http au serveur
Sendinblue via un langage de programmation, on utilisera deux points de terminaison de cet
api :
1 - l’extraction des contacts (qui vont être traité et envoyé à l’entrepôt de
données)
50
#configuration
configuration = sib_api_v3_sdk.Configuration()
api_instance = sib_api_v3_sdk.ListsApi(sib_api_v3_sdk.ApiClient(configuration))
#parametres
list_id = 2
modified_since = '2021-04-20T19:20:30+01:00'
limit = 50 #le nombre de resultat par page
offset = 0 #l'index de la page
#l'affichage du resultat
print(api_response)
51
2 - la récupération du nom de l’entreprise : (l’information permet de créer
le profile de l’entreprise dans l’entrepôt de données)
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = 'API KEY'
api_instance =sib_api_v3_sdk.ApiClient(configuration)
52
5.8 Création et hébergement du serveur Webhook
53
Figure 5.20 – L’installation des bibliothèques nécessaires
#reception de la notification :
54
if request.method == 'POST':
#extraire l'identifiant du formulaire
form_id = request.json['entry'][0]['changes'][0]['value']['form_id']
# l'attribut de confiance
return str(request.args.get('hub.challenge')), 200
def send_to_sib(form_id,lead):
#send data to Sendinblue :
# La récuperation du profile ayant le m^ eme identifiant du formulaire
#récuperé par la notification du webhook Facebook
#se connecter à la base de données des profiles
re = r.RethinkDB()
result=[]
re.connect(host = '<serveur de données>', port = 28015,password="").repl()
results = re.db('f2sib').table("profiles")
.filter(re.row['Streaming'] == "Streaming" & re.row['form_id'] == int(form_id) )
.run()
for res in results:
55
result.append(res)
#envoyer la requ^
ete :
api_instance = sib_api_v3_sdk.ApiClient(configuration)
create_contact = sib_api_v3_sdk.CreateContact(
email=mail_val,
attributes=att_vals,
list_ids=[listid],
email_blacklisted=False,
sms_blacklisted=False,
update_enabled=True
)
try:
api_response = api_instance.create_contact(create_contact)
print('sent to Sendinblue ')
except ApiException as e:
print("error when sending to Sendinblue")
56
Figure 5.22 – le log d’une opération
<script>
window.fbAsyncInit = function() {
FB.init({
// l'identifiant de l'application
appId : '1095093780951571',
// activer les cookiespour utiliser les sessions
cookie : true,
xfbml : true,
// la version de l'api Facebook utilisée
version : 'v10.0'
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
57
};
<script>
Les permissions approuvées par Facebook seront utiles pour cette étape ou
on voit l’utilisation de chaque permission dans L’application.
58
Figure 5.24 – Accepter les autorisations
L’affichage est sous forme de table ou chaque ligne correspond à une page
sélectionnée précédemment, en clinquant sur une page, la liste de ses formu-
laires s’affiche, le le jeton et l’identifiant peuvent être utilisé pour créer un
profil dans l’application.
59
Figure 5.26 – L’outil QT designer
le Bouton Note permet de laisser une note sur l’un des profils pour notifier
les utilisateurs ou les informer.
60
dans son index pour l’aligner avec Sendinblue et les champs de l’entrepôt de
données,
Un double clique suffit pour retirer les attributs non utilisés ou qui ne
serons pas envoyés à Sendinblue et à l’entrepôt de données.
61
5.9.1 L’envoi des données à l’entrepôt de données
Les données récupérées des appels à l’api Sendinblue sont sous format
JSON. Pour mieux visualiser la transformation, on va utiliser les données
d’une entreprise de réparation de téléphones.
profil = {
"token": "EAAV...ZDZD",
"form_id": 798044580837265,
"sib_api": "xkeysib-a6ac9294a9d2...ea9e382-GSEN5OWdxHMaFy2U",
"listid": 21,
"company": "MymeTelecom",
"profile_name": "mymtelecom",
"fb_attributes": ["email", "wilaya", "Panne", "Numero"],
"sib_attributes": ["WILAYA", "PANNE", "TELEPHONE"],
"dwh_attributes": ["Wilaya", "Extra", "SMS"],
"Streaming": "Normal",
"note": "",
62
"time": "2021-05-02 16:03:15.867379",
"last_import": "2021-04-28 13:06:14.850880"
}
1000
1500
2000
...
8002
length of contacts:
8002
Une fois les données récupérées, on aligne les attributs de Sendinblue avec
les attributs associés de l’entrepôt de données et on prépare une liste vide
pour ne remplir que les données utiles, la structure de données utilisée est les
dictionnaires python, une structure proche de la structure JSON, les clés sont
63
les attributs Sendinblue, et les valeurs dont les dimensions de l’entrepôt de
données.
{'Wilaya': [], 'Extra': [], 'SMS': [], 'dim_created_at': [], 'Age': [], 'Sexe': []}
Pour remplir les listes, on parcours les 8002 contact récupérés et on place
la valeur d’un attribut Sendinblue dans l’attribut associé dans l’entrepôt de
donnée si il est présent, et 0 sinon,puis on transforme les liste en un ”Data-
frame” , une structure de données de la bibliothèque Pandas utilisée, pour
faciliter les transformations suivante :
64
Traitements et regroupement des colonnes
def operator(x):
try:
x = str(x)
x = ''.join(c for c in x if c.isdigit())
x = x[3] if x.startswith('213') else x[1] if x.startswith('0') else x[0]
except :
return 0
return 1 if x=='5' else 2 if x=='7' else 3 if x=='6' else 4 if x=='2' else 0
df['SMS'] = df['SMS'].apply(operator)
df['Wilaya'] = [wilayas[trip_remove_acents_lower(x)]
if trip_remove_acents_lower(x) in wilayas.keys()
else '0' for x in df['Wilaya'] ]
Pour Âge, on crée des intervalles (bins), et des noms (labels) pour chaque
intervalle correspondants aux valeurs de cet intervalle dans le Datawarehouse
age_bins=[0,1,20,30,60,120]
age_labels = [0,1,2,3,4]
65
df['Age'] = pandas.cut(df['Age'],bins = age_bins,
labels = age_labels ,
right = False)
Wilaya Extra SMS dim created at Age Sexe dim entreprise nombre
16 0 1 2020-08-04 0 0 MymeTelecom 29
16 0 1 2020-08-03 0 0 MymeTelecom 24
16 0 1 2020-08-05 0 0 MymeTelecom 24
16 0 1 2020-08-06 0 0 MymeTelecom 23
16 0 1 2020-08-14 0 0 MymeTelecom 22
... ... ... ... .. ... ... ...
17 Panne de Afficheur 2 2021-04-17 0 0 MymeTelecom 1
17 Panne de Afficheur 2 2021-03-28 0 0 MymeTelecom 1
17 Panne de Afficheur 2 2021-03-26 0 0 MymeTelecom 1
17 Panne de Afficheur 2 2021-03-24 0 0 MymeTelecom 1
66
Cette requête est généré automatiquement lors d’une importation, les lignes
insérés sont supprimé, on a laissé la première insertion pour la démonstration :
--Partie 1
INSERT INTO public.prospect_count
(temps_id, profile_id, age_id, wilaya_id, sexe_id, extra, nombre, operateur_id)
VALUES
('2021-04-29',
--Partie 2
(SELECT profile_id
from f2sib_profile fsp
where fsp.entreprise = 'MymeTelecom'
union
select profile_id
from f2sib_profile fsp2
where fsp2.entreprise ='N/A'
order by profile_id limit 1)
,0,'16',0,'Panne de Afficheur',1,2),
...
--Partie 3
on conflict (temps_id, profile_id, age_id, wilaya_id, sexe_id,operateur_id,extra)
do update set nombre=EXCLUDED.nombre+prospect_count.nombre;
L’équivalent des cubes sur Apache Superset est appelé data-set virtuel, et
67
les mesures sont représentées par des métriques.
68
Figure 5.34 – la préservation de la qualité de la carte
Pour que la carte soit reconnue par superset, on a rajouté une table d’at-
tributs qui inclut un code (ISO) et un nom (NAME 1) pour chaque wilaya.
69
Figure 5.36 – table de données Geojson
70
Figure 5.37 – Graphique du nombre de prospects par jour
71
Figure 5.39 – graphique de la distribution démographique
72
Figure 5.40 – Le tableau de bord final
73
Figure 5.41 – Filtrage des données
Pour autoriser l’accès des entreprise à ses données tout en gardant les
données des autres entreprise privées , il est possible d’isoler les lignes de
l’entrepôt de données dans Apache Superset.
Sur cet exemple , l’utilisateur ”Reparily” ne peut consulter que les données
de sa propre entreprise
74
5.11 Conclusion
75
Conclusion générale
Au cours des dernières années, les entreprises ont donné plus d’importance aux données,
en améliorant les méthodes de stockage et en profitant des technologies comme les entrepôts
de données et les outils de visualisation pour créer des tableaux de bords.
Les données seront par la suite visualisées dans un tableau de bord centralisé pour mieux
comprendre les prospects.
Les objectifs fixés par Inbound marketing Algérie ont été atteints, et le système est mis
en production.
Perspectives
Le projet est partiellement dans le cloud. On peut envisager de migrer la partie restante
dans le cloud pour rendre le système plus homogène.
On peut aussi développer une application mobile pour améliorer sa portabilité et la vi-
tesse de la réactivité des employés d’Inbound Marketing Algérie.
Annexe
Les base de données NoSQL sont une approche de la conception de bases de données qui
peut s’adapter à une grande variété de modèles de données, y compris les formats avec des
clés, des documents, des colonnes et des graphes. NoSQL signifie not only SQL , et c’est
une alternative à la base de donnée relationnelle traditionnelles
RethinkDB fait partie de la famille des bases de données Nosql orienté documents.
76
Bibliographie
[1] B2B : Les réseaux sociaux influencent de plus en plus les ventes
comarketing-news.fr/b2b-les-reseaux-sociaux-influencent-de-plus-en-plus-les-ventes/
[2] Facebook wikipedia
fr.wikipedia.org/wiki/Facebook
[3] Comment utiliser Facebook Ads pour obtenir des leads ?
www.maarketer.com/p134-facebook-ads-leads.html
[4] Définitions marketing
www.definitions-marketing.com/definition/crm/
[5] Hub spot - Qu’est-ce que l’inbound marketing ?
blog.hubspot.fr/inbound-marketing-information
[6] Quelle différence entre inbound et outbound marketing ?
https ://blog.comexplorer.com/outbound-marketing
[7] le marketing automation ou automatisation du marketing
www.journalducm.com/dictionnaire-marketing/marketing-automation/
[8] Zapirer -Automation
zapier.com/learn/zapier-quick-start-guide/quick-start-the-basics/
[9] Joutnal Du Net - IFTTT
www.journaldunet.fr/web-tech/dictionnaire-de-l-iot/1440670-ifttt-definition-
fonctionnement-et-offres-alternatives/
[10] Astera - API RESTful
www.astera.com/fr/type/blog/rest-api-definition/
[11] blog Mosesif - REST API Design : Filtering, Sorting, and Pagination
www.moesif.com/blog/technical/api-design/REST-API-Design-Filtering-Sorting-and-
Pagination/
[12] techlib - webhooks
techlib.fr/definition/webhook.html
[13] Webhooks v.s. Polling
blog.cloud-elements.com/webhooks-vs-polling-youre-better-than-this
[14] Business Intelligence
www.lebigdata.fr/business-intelligence-definition
77
[15] Date Warehousing Data Mining
chatakatech.com/data-warehousing.html
[16] Oracle - Tout ce que vous devez savoir sur un Data Warehouse
www.oracle.com/fr/database/data-warehouse-definition.html
[17] Focus sur la modélisation en étoile
https ://www.cartelis.com/blog/data-warehouse-modelisation-etoile/
[18] Wikipedia - ETL
fr.wikipedia.org/wiki/Extract-transform-load
[19] QGis
www.ossdirectory.com/che/fr/produits-oss/single/ossproduct/qgis-quantum-gis/
[20] QT
www.ionos.fr/digitalguide/serveur/know-how/qt/
[21] Docker
www.redhat.com/fr/topics/containers/what-is-docker
[22] RethinkDB
fr.wikipedia.org/wiki/RethinkDB
[23] PostgreSQL
www.oracle.com/fr/database/definition-postgresql.html
[24] blog.ippon.fr/2020/11/02/apache-superset-un-logiciel-de-visualisation-a-
suivre/
www.developpez.com/actu/242071/La-version-5-3-2-de-DBeaver-l-outil-de-base-de-
donnees-multiplateforme-est-disponible-tour-d-horizon-des-principales-nouveautes/
[25] DBeaver
www.developpez.com/actu/242071/La-version-5-3-2-de-DBeaver-l-outil-de-base-de-
donnees-multiplateforme-est-disponible-tour-d-horizon-des-principales-nouveautes/
78