Académique Documents
Professionnel Documents
Culture Documents
(FSJEGJ)
Membres du Jury :
Dr Soudani Nedia
Dr Hannachi Refka
2021 - 2022
REMERCIEMENTS
C’est avec un grand plaisir que je réserve cette page en signe de gratitude et de profonde
connaissance à tous ceux qui m’ont aidée à la réalisation de ce travail.
Je remercie tout d’abord l’ensemble de l’équipe pédagogique de FSJEGJ pour ces trois
années de formation durant lesquelles j’ai énormément appris et vécu d’excellents moments.
Je remercie notamment Monsieur TISSAOUI Atef, pour m’avoir accueillie au sein de son
équipe et de m’avoir fait confiance, afin de me permettre de vivre une expérience riche et
passionnante.
Je remercie aussi toutes les personnes qui de près ou de loin m’ont suivie et aidée afin de
concrétiser ce projet dans les meilleures conditions et les meilleurs délais.
1
3 Planification et Spécification des besoins 22 3.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Planification . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.1 Diagramme de GANTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3 Spécification des
besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.1 Identification des
acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4 Identification des besoins . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 24 3.4.1 Besoins fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24 3.4.2 Besoins non fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.4.3 Diagramme
de cas d’utilisation global . . . . . . . . . . . . . . . . . . . . . . 25 3.5 Architecture globale . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 25 3.6 Choix des indicateurs et collecte des informations . . . . . .
. . . . . . . . . . . . . 26 3.7 Environnement de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 3.7.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7.2 Environnement
logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.2.1 SQL SERVER . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 28 3.7.2.2 Jupyter NoteBook . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.2.3
Superset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.2.4 Docker . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 29 3.8 Approche de conception du modèle dimensionnel . . . . . . . . . . . . . . . .
. . . . 30 3.8.1 Approche de Bill Inmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.2 Approche
de Ralph Kimball . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.3 Choix de l’approche . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 31 3.9
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7 Conclusion Générale 61
TABLE DES FIGURES
1.1 Logo CLN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 Cycle de vie
dimensionnel de Ralph Kimball . . . . . . . . . . . . . . . . . . . . . . 11
4
5.12 Alimentation de la base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
INTRODUCTION GÉNÉRALE
Chaque jour de nouvelles données sont produites dans l’entreprise qui à son tour cherche tou jours à
prendre les meilleures décisions, tant pour accroitre leur productivité, que pour répondre aux besoins des
clients. Et pour atteindre ses objectifs, elle a besoin d’analyser les données qui la proviennent des
marchés.Grâce à cette analyse, elle pourra mener des actions intelligentes. C’est là que la business
intelligence prend tout son sens. Afin de maintenir l’avantage compétitif, mieux cibler sa clientèle,
examiner les grandes tendances du marché et faciliter la prise de décisions, le Central Laitière du Nord
vise à exploiter ses données grâce à des outils performants.
C’est dans ce contexte que s’inscrit mon projet de fin d’études réalisé au sein de la direction du système
d’information au Central Laitière du Nord, qui aura pour but la mise en place d’un système d’aide à la
décision et d’analyse prédictive dédié principalement au suivi les évolutions de ventes et les activités des
clients et des commandes. Cela permettra aux décideurs d’avoir une vue globale et synthétique sur
l’ensemble des données en assurant leur centralisation et historisation.
Ce présent rapport s’articule autour de six chapitres. Le premier chapitre consiste en une pré sentation du
cadre général du projet incluant une présentation de l’entreprise d’accueil, le contexte du projet dans un
premier lieu. Nous définissons la méthodologie adoptée pour mettre en place notre solution dans un
deuxième lieu. Le deuxième chapitre consiste à définir toutes les notions sur lesquels ce projet est basé
tel que la définition du Business Intelligence, ses objectifs et l’ar chitecture associé et d’autres. Le
troisième chapitre définit la planification des tâches, les acteurs, les besoins fonctionnels et non
fonctionnels et étale aussi une étude technique de la solution pro posée tout en spécifiant l’architecture
suivie et l’environnement technique. Le quatrième chapitre sera consacré pour l’identification du modèle
dimensionnel et la conception du modèle physique de magasin de données. Le cinquième chapitre
détaillera toutes les étapes de la mise en place et le développement de l’application de la préparation de
l’infrastructure jusqu’au la phase ETL. Le sixième chapitre englobe l’étape de restitution de d’analyse de
données qui représente les différents tableaux de bord et le déploiement de notre solution.
Enfin, une conclusion synthétisera notre travail et présentera les perspectives futures. 7
CHAPITRE 1
1.1 Introduction
Dans ce chapitre, nous allons présenter l’organisme d’accueil : Centre Laitière du Nord
«CLN», l’établissement au sein duquel s’est déroulé notre projet de fin d’études ainsi son
historique et ses différentes activités. Ensuite, nous procéderons à la présentation du cadre du
projet qui nous permettre de mieux comprendre le problème étudié et en déduire des solutions.
Enfin, nous allons présenter la méthodologie du travail adoptée.
La société Centrale Laitière Du Nord « CLN »[7]est une société anonyme spécialisée dans la
production des produits laitiers et ses dérivés. C’est l’une parmi les dix sociétés de Groupe
8
DELICE, le leader du secteur de l’industrie agroalimentaire sur le marché tunisien. Elle a toujours
fait de la qualité de ses produits une priorité absolue et a su construire un fort capital confiance
avec ses consommateurs, alors elle est classée la deuxième, au prix national de la qualité en
2020.
1.2.2 Historique
En Mai 1986, le Centrale Laitière du Nord a été créer, il a poursuivi son développement par la
création des produits laitiers sous la marque locale LAINO. En 2005, saisissant de l’opportunité
d’agrandir sa part de marché dans le secteur du lait longue conservation, le Groupe Délice a
investi 9,5 millions de dinars pour l’acquisition de la Centrale Laitière du Nord « CLN » profitant
ainsi d’une capacité de production supplémentaire et d’une présence consolidée dans le bassin
laitier du nord-ouest du pays.
1.2.3 Activités
La société Centrale Laitière Du Nord « CLN » est spécialisée dans la transformation du lait, la
production et la commercialisation des produits laitiers et ses dérivés (Yaourt, Beurre, Fromage
Frais, Crème Dessert...), ainsi tous produits agroalimentaires.
1.4 Problématique
D’une année à une autre, la demande sur les produits Délice augmente et les besoins des
clients se changent. Face à cette surcharge de travail, le groupe Délice a remarqué
l’augmentation de la masse des données et la vitesse de leur évolution, ce qui rend la gestion, le
contrôle et la prise de décision dans l’entreprise plus difficile. Cette situation a amené le groupe à
revisiter et améliorer leur processus de prise de décision et de reporting financier afin de pouvoir
prendre les bonnes décisions au bon moment. Dans le cadre de renforcer le système de prise de
décision, les propriétaires de Délice espèrent se tourner vers l’avenir et trouver les meilleures
façons d’investir du capital et des ressources tout en travaillant au succès à long terme de leur
entreprise. Il faut donc un moyen permettant de recueillir facilement les données, les analyser, les
visualiser et prédire le comportement futur en fonction des comportements passés.
9
1.5 Solution proposée
La solution envisagée, est un système d’aide la décision et d’analyse prédictive permettant de
mettre à la disposition des décideurs les moyens nécessaires pour qu’ils puissent prendre les
décisions stratégiques et opérationnelles les plus adéquates. En effet, ce système pourrait aider à
anticiper les besoins des clients, permet aussi la flexibilité de réagir face à des changements
majeurs sur le marché, à prévoir les tendances plus larges du marché ou à gérer les risques, ce
qui offre un avantage concurrentiel et, en fin de compte, augmente les revenus. Notre système va
assurer la possibilité de :
— Maximiser la productivité
— Réagir rapidement à l’évolution de marché et aux attentes des clients.
— Accélérer la commercialisation de nouveaux produits.
— Identifier les produits les plus rentables.
— Maîtriser la chaine d’approvisionnement.
— Améliorer la planification et la programmation.
— Prédire la quantité de vente
— Optimiser les flux d’information.
10
Dans ce qui suit, nous allons détailler les différentes étapes pour une meilleure
compréhension du cycle de vie dimensionnel .
11
Étape Objectif
Planification du Pro — Définir l’étendue du projet ainsi que sa planification qui dépend des
jet besoins comme l’indique la flèche en double sens de la figure ci-
dessus (figure 1.2).
— Étudier les ressources et l’affectation des tâches.
Définition des Cette phase permet d’identifier les utilisateurs de l’application et leurs
Besoins BI besoins. Une fois les besoins définis , trois trajectoires parallèles
seront lancés qui sont la technologie, les données et les interfaces
utilisateur.
Gestion du projet — Garantir que les activités du cycle de vie restent sur la bonne voie
et sont bien synchronisées.
— Détecter et résoudre les problèmes.
Modélisation Dimen — Définir les données requises pour répondre aux besoin des
sionnelle utilisateurs. — Construire la matrice qui représente les processus
métier clés et leurs dimensionnalités.
— Réaliser le modèle dimensionnel (La granularité de la table de faits
ainsi que les dimensions associées).
12
1.6.2 Méthodologie de Gimsi
Gimsi [2] définit un cadre méthodologique afin de mieux formaliser les conditions de réussite
du projet Business Intelligence centré sur la problématique du "tableau de bord". La méthode a
pour ambition de dynamiser l’originalité et la créativité des concepteurs et utilisateurs. C’est ainsi
que l’on réussit l’intégration du système de tableaux de bord au cœur de la culture d’entreprise
sans perdre de vue la question du pilotage de la performance. Cette méthode se compose de 4
phases principales découpées en 10 étapes.
Phase Étape et objectif
13
1.7 Conclusion
Ce chapitre introductif nous a permis de détailler le cadre général du système. Après avoir
décrit l’organisme d’accueil d’une part, et la solution que nous allons concevoir et développer
d’autre part, nous avons présenté la méthodologie à adopter pour la réalisation du projet.
14
CHAPITRE 2
L’INFORMATIQUE DÉCISIONNELLE
2.1 Introduction
Dans ce deuxième chapitre, nous commençons par la définition du Business Intelligence, ses
objectifs et son architecture tel que la DataWarehouse, le DataMart et l’extraction de données.
Par la suite on s’intéresse aux différents modèles du DataMart, et la relation entre la consolida
tion financière, le reporting et le tableau de bord. Enfin nous décrivons le système d’information
décisionnel (SID), son évolution dans le temps et une comparaison avec le système
transactionnel.
15
leur environnement, identifier les tendances de marché, générer des comptes rendus
personnalisés pour chaque pôle et chaque activité et ainsi d’adopter des stratégies pertinentes.
2.4 L’architecture du BI
16
2.4.2 Le magasin de données (DataMart)
Un datamart (ou magasin de données) [3] est une vue partielle du datawarehouse mais
orientée métier. C’est un sous-ensemble du datawarehouse contenant des informations se
rapportant à un secteur d’activité particulier de l’entreprise ou à un métier qui y est exercé. On
peut donc créer plusieurs datamart correspondant au différent besoin des utilisateurs. Cela
permet de réduire le nombre d’opération sur les bases de production. De plus cela permet d’offrir
aux utilisateurs un outil spécifiquement adapté à leurs besoins. Cet outil sera plus petit et
permettra donc un accès plus rapide à l’information.
17
2.5.1 Comparaison des modèles
Schéma en étoile Schéma en flocon de neige
Le schéma en étoile et en flocon est utilisé pour concevoir l’entrepôt de données. Les deux
ont certains avantages et inconvénients. Cependant, l’utilisation du schéma en flocon minimise la
redondance, mais ce n’est pas populaire en tant que schéma en étoile qui est utilisé la plupart du
temps dans la conception de l’entrepôt de données. [13]
18
Schéma en étoile Schéma en constellation
Un schéma en étoile représente chaque Les tables de dimension sont partagées
fait avec une seule table de dimension. par de nombreuses tables de faits. Le
schéma en constellation se compose de
plusieurs sché mas d’étoiles à la fois
Dans le schéma en étoile, des requêtes Des requêtes très complexes sont
simples sont utilisées pour accéder aux utilisées pour accéder aux données de la
don nées de la base de données. base de don nées.
Il est très simple à comprendre en raison Bien qu’il soit très difficile à comprendre
de sa simplicité. en raison de sa complexité.
19
de l’informatique décisionnelle. En effet, le système d’information décisionnel (SID) désigne l’en
semble des moyens, outils et méthodes qui permettent à l’entreprise de collecter, renforcer,
stocker, agréger et restituer les données importantes afin de fournir une véritable aide à la
décision.
décisionnels 20
2.10 Conclusion
Dans ce chapitre, nous avons détaillé toutes les notions relatives au Business Intelligence,
puis nous nous concentrons sur les systèmes de l’information décisionnel et leur importance dans
l’en treprise. Nous pouvons ainsi entamer la prochaine étape qui consiste à présenter la phase de
planification et spécification des besoins
21
CHAPITRE 3
3.1 Introduction
Dans ce chapitre, nous présentons tout d’abord la planification de notre projet en identifiant
les tâches et l’équipe de réalisation. Par la suite, nous donnons une identité à notre projet en
définissant les besoins fonctionnels et non fonctionnels, l’architecture global et les étapes de
notre méthodologie. Enfin, nous décrivons l’environnement technique et les outils nécessaires
ainsi que l’approche de conception pour notre projet.
3.2 Planification
Établir un planning projet précis s’avère indispensable pour une gestion de projet efficace.
Alors afin de bien organiser et planifier les tâches à mener pour réussir le projet pendant une
période bien définie au préalable, nous avons choisi d’utiliser un outil d’ordonnancement et de
gestion de projet qui permet de représenter visuellement l’état d’avancement et la succession des
différentes tâches.
22
Figure 3.1 – Diagramme de GANTT
Administrateur : L’administrateur joue un rôle primordial et fondamental, c’est une per sonne
responsable de tous les paramétrages de l’application, il a le droit de gérer les comptes et les
permissions des utilisateurs et accorder les rôles.
23
3.4 Identification des besoins
3.4.1 Besoins fonctionnels
La solution à réaliser doit offrir un ensemble de fonctionnalités qui doivent être mises en
relation avec un ensemble de besoins des utilisateurs. Afin de satisfaire nos utilisateurs et leurs
fournir des moyens nécessaires pour qu’ils puissent prendre les décisions stratégiques et
opérationnelles, notre solution doit donc assurer un tableau de bord bien ciblé avec des données
filtrées afin de fournir au décideur la possibilité de prendre les meilleures décisions.
- Gérer les permissions et accorder les rôles aux utilisateurs : Le système permet à
l’administrateur d’accorder l’accès à des utilisateurs spécifiques (le directeur général ne peut pas
créer des nouveaux tableaux de bord) et attribuer un rôle à chaque utilisateur.
- Créer des tableaux de bord : Le système permet au responsable commercial de créer des
nouveaux tableaux de bord à partir des nouvelles données.
- Ajouter des données : le système permet au responsable commercial d’ajouter des nouvelles
données afin de rafraîchir les tableaux de bord pour prendre des nouvelles décisions.
24
doit être hautement sécurisée, les informations et les tableaux de bord ne devront pas être ac
cessibles et autorisés à tout le monde, c’est-à-dire que tous les accès des utilisateurs doivent être
protégés par un login et un mot de passe pour parvenir à la sécurité du système.
La performance : Notre système doit être performant, agile et rapide, il doit être agir rapi
dement et répond à toutes les exigences des utilisateurs d’une manière optimale.
La fiabilité : Les données fournies doivent êtres fiables et le système doit rendre des résultats
corrects, pertinents et significatifs.
25
- La première phase est la phase de la collecte des données, alors pour mettre en place notre sys
tème, une source de données d’entreprise nous a été fournie en entrée, cette source est un
fichier Excel qui contient des données hétérogènes et non standardisées.
- La deuxième phase est la phase ETL (Extract, Transform et Load) par lequel vont passer toutes
les données des systèmes opérationnels avant d’arriver à la forme souhaitée dans le datamart.
D’abord, nous avons effectués une identification des données à partir de la source, lire,
comprendre la source de données puis extraire les données dont on a besoin et les orienter vers
le système décisionnel. Après l’extraction des données, ces dernières subissent un travail de
transformation, de nettoyage et de filtrage. Une fois les données extraites et transformées, nous
allons les intégrer dans notre magasin de données (DataMart). En effet, les données qui seront
présentes dans cette base dimensionnelle sont des données figées et consolidées.
- La troisième phase est la phase d’analyse et restitution, pour faciliter l’accès à l’information,
pour tous les utilisateurs selon leurs profils métiers et afin d’extraire les éléments de décision pour
dynamiser la réactivité globale dans l’entreprise, ces données sont mises à la disposition sous
forme de tableaux de bord.
La figure ci-dessous illustre l’architecture globale de notre projet.
26
— L’indicateur doit être constructible
— L’indicateur doit pouvoir être présenté sur le poste de travail
Les responsables de la société d’accueil, et grâce à leur expérience dans le métier du conseil,
ont rectifié et validé la liste d’indicateurs relatifs aux ventes que nous avons élaborée. Les
indicateurs choisis pour répondre aux besoins prédéfinis dans le secteur des ventes sont les
suivants :
— Profits et pertes totals.
— Perte par produit.
— Quantité vendue pour chaque produit et dans chaque région.
— Total des factures.
— Taux de commandes.
— Nombre totale de client.
— Nombre de clients par région.
— Taux de clients par année
— Taux de rétention client.
— Taux de rétention par client.
Une fois les indicateurs choisis, nous allons les construire avec les informations à notre
disposition. Alors dès que l’information est disponible physiquement, elle sera nettoyée, vérifiée
et consolidée.
27
Figure 3.4 – Spécification de la machine
28
3.7.2.2 Jupyter NoteBook
Jupyter[11] est une application web utilisée pour programmer dans plus de 40 langages de
programmation, dont Python, Julia, Ruby et R , dont l’objectif est de développer des logiciels
libres, des formats ouverts et des services pour l’informatique interactive. Jupyter permet de
réaliser des calepins ou notebooks, c’est-à-dire des programmes contenant à la fois du texte en
markdown et du code. Ces calepins sont utilisés en science des données pour explorer et
analyser des données.
3.7.2.3 Superset
Apache Superset[12] est une application Web d’intelligence d’affaires moderne et prête pour
l’entreprise. Il est rapide, léger, intuitif et doté d’options qui permettent aux utilisateurs de toutes
compétences d’explorer et de visualiser facilement leurs données, des simples graphiques
circulaires aux graphiques géospatiaux très détaillés.
3.7.2.4 Docker
Docker est un outil qui peut empaqueter une application et ses dépendances dans un
conteneur isolé, qui pourra être exécuté sur n’importe quel serveur machine, qu’il soit physique
ou virtuel. C’est une technologie qui a pour but de faciliter les déploiements d’application, et la
gestion du dimensionnement de l’infrastructure sous-jacente. Il ne s’agit pas de virtualisation,
mais de conteneurisation, une forme plus légère qui s’appuie sur certaines parties de la machine
hôte pour son fonctionnement. Cette approche permet d’accroître la flexibilité et la portabilité
d’exécution d’une application, laquelle va pouvoir tourner de façon fiable et prévisible sur une
grande variété de machines hôtes, que ce soit sur la machine locale, un cloud privé ou public...
29
Figure 3.8 – Logo Docker
30
qui suit, nous allons effectuer une définition à chacune de ces deux approches et une
comparaison entre elles.
31
l’approche de Kimball (Bottom-Up) dans plusieurs raisons, d’une part cette approche est carac
térisée par sa simplicité, sa rapidité et d’autre part notre solution est orientée vers un secteur
d’activité particulier.
3.9 Conclusion
Ce chapitre a été consacré à la planification du projet et à la spécification des besoins fonction
nels et non fonctionnels pour mieux identifier les objectifs attendus de notre solution et l’approche
de conception du modèle dimensionnel et de citer les technologies ainsi que les outils utilisés lors
du projet. Nous pouvons ainsi entamer la prochaine étape qui consiste à présenter la conception
de notre entrepôt de données.
32
CHAPITRE 4
4.1 Introduction
Au cours du ce chapitre, nous entamons la phase de modélisation dimensionnelle et la
conception du modèle physique du magasin de données.
33
4.2.2 Modèle en flocon de neige
C’est une manière de relier une dimension à un fait dans un entrepôt de données. C’est le
modèle en étoile avec une relation entre les dimensions. Il peut exister des hiérarchies des
dimensions pour diviser les tables de dimensions lorsqu’elles sont trop volumineuses.
Figure 4.2 – Modèle en flocon de neige
34
4.3 Identification des faits
Les tables de faits contiennent les données que l’on souhaite voir apparaître dans les rapports
d’analyse, sous forme de métriques. Les données des tables de faits sont agrégées à partir des
tables de dimensions qui leur sont associées.
Reprenons la table de fait Vente dont l’objectif est de rassembler les informations concernant les
ventes des produits. Le grain de cette table de fait est en fait une ligne de commande et des
ventes : chaque ligne concerne un ou plusieurs produits commandés par un client donné à une
date donnée. La facture réunissant l’ensemble d’une ou plusieurs commandes pour un seul client.
Total des factures Total des factures par mois Mesure additive
Le tableau ci-dessous représente les dimensions relatives à l’analyse du fait Vente. Les clés
primaires sont en gras.
36
Dimension Description Attribut
Client Cette dimension code-client, code-region
correspond aux clients.
4.5 Conclusion
Ce chapitre a été consacré à définir la conception du modèle physique du DataMart (magasin
de données) pour que nous puissions passer à la partie de préparation et alimentation des
données dans le chapitre qui suit.
37
CHAPITRE 5
5.1 Introduction
Ce chapitre fait le tour de toutes les étapes d’implémentation et de développement de notre
application. Il introduit la phase essentielle, celle de la préparation de l’infrastructure et les outils
nécessaires à cette phase. De plus, sera introduit le développement de ETL tel que l’extraction,
transformation et le chargement des données.
38
Figure 5.1 – Interface Docker Desktop
39
Figure 5.2 – Téléchargement de l’image superset sur Docker
USER root
USER superset
RUN superset fab create-admin --username admin --firstname Wiem --lastname Jouini \ --email
admin@superset.com\
--password admin
40
Une fois l’image téléchargée et si nous jetons un coup d’œil au tableau de bord Docker, nous
allons voir notre nouvelle image modifiée.
Figure 5.3 – Création d’une nouvelle image Superset
De plus, nous pouvons également vérifier les conteneurs en cours d’exécution en utilisant la
commande : conteneur docker ls. Et comme vous pouvez le voir dans la figure ci-dessus, le
conteneur SQL Server Docker a été créé à partir de l’image et il est maintenant opérationnel
41
version: "2.7"
services:
database:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "SQLSERVER2019,"
ports:
- "1433:1433"
superset:
build: "./docker/superset"
ports:
- "8088:8088"
42
Figure 5.5 – Connection à SQL Server
Après quelques instants, SSMS se connecte à notre instance de base de données. Enfin,
pour pouvoir stocker nos données, nous allons créer notre base de données qui sera appelé
“ventes.
43
Figure 5.7 – choisir la base de données dans Superset
Ensuite, après avoir choisi Microsoft SQL Server, nous allons créer un URl avec la
spécification du mot de passe, du port et le nom de la base de données (ventes) que nous avons
déjà créé où nous pourrons par la suite transférer les données.
Maintenant, la connexion a été effectué, nous pouvons donc charger nos données après les
avoir transformés et traités.
44
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./data/ventes.xlsx')
df.head()
Par la suite, nous allons pouvoir effectuer les différents changements nécessaires en
éliminant les redondances, en modifiant les noms des colonnes pour homogénéiser et unifier les
données afin de les rendre exploitables dans la phase de l’exportation des données qui suit, puis
nous allons extraire les tables de dimensions et les tables de fait.
Une fois les tables sont extraites, nous allons les exporter dans des fichiers CSV pour pouvoir
les charger dans la base de données. Pour l’exportation, nous allons créer ce code python.
ventes_df.to_csv('./data/ventes.csv', index=False)
facture_df.to_csv('./data/facture.csv', index=False)
commande_df.to_csv('./data/commande.csv', index=False)
produit_df.to_csv('./data/produit.csv', index=False)
client_df.to_csv('./data/client.csv', index=False)
magasin_df.to_csv('./data/magasin.csv', index=False)
region_df.to_csv('./data/region.csv', index=False)
Finalement, nous allons alimenter la base de données à travers Superset. Pour cette étape,
nous allons premièrement se connecter à superset avec un nom d’utilisateur et un mot de passe
que nous les avons déjà identifiés dans le Dockerfile.
45
Figure 5.9 – Connexion à Superset
Ensuite, nous allons charger les fichiers CSV dans la base de données.
Enfin, nous allons remplir le formulaire et importer les fichiers que nous avons besoins et les
stocker dans la base de données.
46
Figure 5.11 – Remplissage du formulaire
Une fois les fichiers sont chargés et enregistrés, nous pouvons commencer à créer les
graphes et les tableaux de bords.
5.4 Conclusion
Après avoir préparé la partie modélisation dimensionnelle afin de bien identifier les grandes
lignes de notre solution, nous avons effectué, durant ce chapitre, les différentes étapes depuis la
préparation de l’infrastructure jusqu’à alimentation de la base de données. Dans le chapitre
suivant, nous allons décrire la phase de restitution des données.
47
CHAPITRE 6
48
Figure 6.1 – Page d’accueil 49
6.2.2 Suivi des transactions
Le tableau de bord ci-dessous nous procure une vue globale sur toutes les informations
concer nant les transactions effectuées. Ce tableau de bord contient les visualisations suivantes :
— Un graphique en secteur pour visualiser le taux de commandes.
— Un graphique en anneau qui représente le taux de profit et de perte.
— Un graphique en courbe ou nous pouvons visualiser le nombre total des facteurs par mois
avec un curseur pour zoomer sur une période précise.
— Un histogramme empilé pour pouvoir visualiser la quantité vendue de chaque produit par
région.
50
— Un graphique en courbe qui représente le montant de perte par produit. Par le biais de ce
tableau de bord, le décideur a la possibilité d’analyser les données par produit.
Ce tableau de bord illustre une vue détaillée sur les informations des clients. Il permet de
visualiser le nombre total des clients et le taux de rétention clients. Le tableau de bord affiche
également :
— Un histogramme empilé pour visualiser le taux des clients par années.
51
— Graphique circulaire qui représente nombre totale des clients dans chaque région. — Un
histogramme empilé pour la visualisation du taux de rétention pour chaque client Afin de mieux
visualiser les données, un filtre temporaire sera assuré. Le décideur pourra également analyser
par client.
6.3.3 Expérimentations
Nous entamons maintenant la phase des expériences où nous allons tester quelques modèles
et algorithmes de machine learning pour nos prédictions.
Les principaux objectifs de notre solution, avoir une visibilité sur le comportement d’achat des
clients en connaissant les quels des produits ont achetés ou commandés ensemble avec une
prédiction de l’état financières de l’entreprise.
52
6.3.3.1 Analyse du comportement du client
Pour mieux comprendre les comportements de nos clients, nous avons choisi la méthode de
l’analyse des associations qui est utilisée pour découvrir des associations ou des relations
cachées entre nos données. Les relations découvertes peuvent être représentées sous forme de
règles d’as sociation ou d’ensemble d’items fréquents. Ces informations servent à bien mener les
campagnes marketing, mieux gérer les inventaires ou améliorer les relations clients.
6.4.1.1 Implémentation
Dans cette partie, nous allons implémenter l’algorithme a priori pour l’extraction des règles
d’association. La première étape consiste à importer les bibliothèques requises. Nous avons
utilisé le script ci-dessous pour l’implémentation.
53
import pandas as pd
from apyori import apriori
items = []
association = inspect(rules)
association.to_csv('data/association.csv', index=False)
L’étape suivante, sert à charger les données à partir du fichier facture.csv et les grouper par le
numéro de factures. Et enfin, nous allons appliquer l’algorithme Apriori sur l’ensemble des
données. Pour l’utiliser, nous allons fixer un support et une confiance minimale, cela signifie que
nous ne sommes intéressés que par la recherche de règles pour les éléments qui ont une
certaine existence par défaut (le support) et ont une valeur minimale de cooccurrence avec
d’autres éléments (confiance). Le script suivant affiche ces étapes
6.4.1.2 Résultat
Après avoir appliqué et exécuté l’algorithme, finalement, nous avons le résultat qui lui est
associé.
54
Figure 6.4 – Résultat des règles s’association
À partir de la figure ci-dessus, on peut voir que les produits qui apparaissent toujours
ensemble dans la plupart des commandes des clients.
import pandas as pd
df = pd.read_csv('../data/commande.csv')
55
data = df.groupby(['type_cmd']).agg(list)
train_size = int(len(total) * 0.75)
train_df, test_df = total[:train_size], total[train_size:]
train_df.to_csv('../data/train/{}.csv'.format(name))
test_df.to_csv('../data/test/{}.csv'.format(name))
import pandas as pd
from sklearn.linear_model import LinearRegression, SGDRegressor, Lasso, ElasticNet from
sklearn.metrics import mean_squared_error
y_test = test_df['target']
y_train = train_df['target']
x_train = np.arange(len(train_df)).reshape(-1, 1)
x_test = np.arange(len(test_df)).reshape(-1, 1)
model.fit(x_train, y_train)
y_hat = model.predict(x_test)
return model
train_df = pd.read_csv('../data/train/co.csv')
test_df = pd.read_csv('../data/test/co.csv')
train_df.sort_values(by='date', inplace=True)
test_df.sort_values(by='date', inplace=True)
models = [
(SGDRegressor(max_iter=1000), 'SGD Regressor'),
(Lasso(alpha=1.0), 'LASSO'),
(ElasticNet(alpha=1.0, l1_ratio=0.5), 'ElasticNet'),
(LinearRegression(), 'Linear Regression')
56
]
x_test = np.arange(len(test_df)).reshape(-1, 1)
plt.title('Visualisation des résultats de l\'entrainement') plt.plot(x_test,
test_df['target'], 'b', label='target')
import pickle
import pandas as pd
from matplotlib import pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
traindf.fillna(0, inplace=True)
testdf.fillna(0, inplace=True)
traindf.index = pd.to_datetime(traindf['date'])
testdf.index = pd.to_datetime(testdf['date'])
res = model.fit()
y_hat = res.forecast(steps=len(testdf))
plt.figure(figsize=(15, 10))
plt.title('Visualisation du modele ARIMA phase de test')
plt.plot(testdf.index, testdf['target'], 'b', label='test') plt.plot(testdf.index,
y_hat, 'r', label='prediction')
plt.legend()
plt.grid()
plt.show()
57
6.4.2.2 Résultats et choix du modèle
Dans cette étape, nous allons exposer les résultats obtenus des différents modèles décrits pré
cédemment, ensuite nous allons comparer leurs performances et enfin choisir parmi ces modèles
le plus performant.
Figure
La figure ci-dessus montre que les modèles suivant Régression Linéaire, SGDRregressor,
Lasso et ElasticNet ont la même performance puisqu’ils ont la même courbe, mais si nous les
comparons avec la courbe des données d’entraînement nous remarquons une grande différence
entre les deux courbes.
58
Figure 6.6 – Résultat du modèle ARIMA
La deuxième figure ci-dessus montre le résultat de prédiction du modèle ARIMA avec une
différence entre la courbe des données de test et celle du modèle ARIMA. D’après ces résultats
nous ne pouvons pas conclure les quels de ces modèles est le plus performant alors nous avons
opté de les comparer en utilisant un autre facteur le RMSE (L’erreur quadratique moyenne) est un
calcul statistique utilisé pour déterminer la différence entre les valeurs prédites dans un modèle et
les valeurs réelles des observations.
Modéle MSE
LASSO 1215.8721
ElasticNet 1215.7082
ARIMA 1193.101
6.4.2.3 Déploiement
Maintenant, nous sommes à l’étape finale, l’étape de déploiement. En effet, une fois le modèle
créé, testé et évalué sur les données de test, celui-ci est mis en production pour les utilisateurs
59
finaux. Cette étape nécessite l’utilisation du processus de sérialisation qui est un moyen permet
de transformer une structure d’objet complexe en un flux d’octets qui peut être enregistré ou
envoyé sur un réseau. Dans notre cas, le but d’utiliser ce moyen à travers le module pickle est
d’enregistrer notre modèle choisi ARIMA après la phase d’entraînement afin que vous puissiez
l’utiliser plus tard sans avoir à refaire l’entraînement. Une fois le modèle est enregistré, nous
avons créé une interface pour faciliter à l’utilisateur de suivre les prédictions et utiliser le modèle.
La figure ci-dessous représente l’interface d’analyse prédictive.
6.5 Conclusion
La phase de restitution et d’analyse de données représente la dernière étape de notre travail.
A travers cette phase, nous avons représenté les différentes interfaces de nos tableaux de bord
ainsi que les résultats des analyses assurés sur les données et enfin les étapes de déploiement
de l’application utilisateur.
60
CHAPITRE 7
CONCLUSION GÉNÉRALE
Le Business Intelligence est un domaine en évolution utilisé pour soutenir la prise de décision
commerciale. C’est devenu une exigence en capital, car la simple logique de production pour ré
pondre à la demande n’est plus suffisante pour maintenir la continuité de cette activité, ainsi les
entrepôts et les magasins de données ont vu le jour.
C’est dans ce contexte que nous réalisons notre projet de fin d‘études dans le cadre de
l’obtention de la licence fondamentale en informatique de gestion, effectué au sein de Centre
Laitière du Nord « CLN ». Nous soulignons le prévalu acquis suite à la mise en pratique de nos
connaissances théoriques dans un environnement professionnel. L’objectif de notre projet était de
concevoir et mettre en place un système d’aide à la décision et d’analyse prédictive dédiée à
l’analyse et le suivi des activités des clients et des commandes, pour faciliter la prise de décisions
aux décideurs. Dans une première partie, nous avons étudié le cadre général du projet, analysé
et spécifié les besoins qui nous ont permis de distinguer les différents acteurs interagissant avec
l’application et de déterminer les besoins fonctionnels et non fonctionnels du système. Par la
suite, nous avons défini l’architecture de notre solution, ainsi que l’implémention de notre entrepôt
de données. La dernière partie du projet est consacrée à l’explication de toutes les étapes de
mise en place de l’application, au déploiement des tableaux de bord et à l’analyse prédictive.
Cette expérience nous a amenés à découvrir et nous approfondir dans le domaine du Business
Intelligence et ses principales phases en utilisant la méthodologie de Ralph Kimball. Elle nous a
permis d’apprendre à manipuler de nouveaux outils tels que Docker et superset. Finalement,
cette expérience nous a permis d’enrichir nos connaissances, notre formation théorique et
pratique acquise tout au long de notre cursus universitaire et ainsi d’améliorer nos capacités à
nous intégrer dans la vie professionnelle.
En termes de perspectives, nous pouvons améliorer notre système en ajoutant de nouveaux
axes à traiter et des tableaux de bord selon le besoin du client.Nous pouvons aussi implémenter
et essayer d’autres algorithmes et modèles de Machine Learning qui permettront à nos
prédictions d’être plus précises.
61
WEBOGRAPHIE
62