Analyse OLAP des Ventes de Fruits – Projet EFD
Noms :
- ALLALI Chakib Khalil
- BENDJERID Mohammed Abdelaziz
Spécialité : Master 1 - Aide à la Décision et Systèmes Intelligents (ADSI)
Le dataset est généré artificiellement pour représenter les ventes de
fruits dans 5 supermarchés (s1 à s5) répartis
sur différentes zones géographiques : Est, Ouest, Sud,
Nord.
- Les fruits disponibles sont : orange, citron, banane,
kiwi
- Les années analysées sont : 2023, 2024, 2025
- Une quantité aléatoire est associée à chaque vente
Des règles de nettoyage ont été appliquées : - Exclusion des ventes
de banane et citron dans le
supermarché s2 - Suppression des ventes de
kiwi en 2024
library(plotly)
library(reshape2)
library(dplyr)
library(ggplot2)
supermarches <- c("s1", "s2", "s3", "s4", "s5")
fruits <- c("orange", "citron", "banane", "kiwi")
annees <- c(2023, 2024, 2025)
zones <- c("s1" = "Est", "s2" = "Ouest", "s3" = "Sud", "s4" = "Nord", "s5" = "Nord")
set.seed(911)
donnees_brutes <- data.frame(
Supermarche = sample(supermarches, 60, replace = TRUE),
Fruit = sample(fruits, 60, replace = TRUE),
Annee = sample(annees, 60, replace = TRUE),
Quantite = sample(0:100, 60, replace = TRUE)
)
donnees_brutes$Zone <- zones[donnees_brutes$Supermarche]
Data <- donnees_brutes %>%
filter(!(Supermarche == "s2" & Fruit %in% c("banane", "citron"))) %>%
filter(!(Fruit == "kiwi" & Annee == 2024)) %>%
distinct()
plot_olap <- function(data, titre = "Cube OLAP 3D") {
data$Zone_num <- as.numeric(as.factor(data$Zone))
plot_ly(
data,
x = ~Annee,
y = ~Fruit,
z = ~Zone_num,
color = ~Quantite,
text = ~paste("Quantité:", Quantite),
type = "scatter3d",
mode = "markers",
marker = list(size = 10, opacity = 0.8)
) %>% layout(
title = titre,
scene = list(
xaxis = list(title = "Année"),
yaxis = list(title = "Fruit"),
zaxis = list(title = "Zone")
)
)
}
cube_olap <- Data %>% filter(Quantite > 0)
plot_olap(cube_olap, "Cube OLAP - Quantité > 0")
Explication :
Ce cube affiche uniquement les ventes ayant une quantité strictement
positive.
Il permet d’analyser l’ensemble des transactions valides en se basant
sur trois axes : - l’année de vente (axe X), - le type de fruit (axe Y),
- et la zone géographique (axe Z).
Cela permet de repérer les tendances générales de vente sur la période
étudiée.
slice_2025 <- cube_olap %>% filter(Annee == 2025)
plot_olap(slice_2025, "Slice - Année 2025")
Explication :
Ce slice extrait uniquement les ventes qui ont eu lieu en 2025.
Cela permet de se concentrer sur une année spécifique pour faire une
analyse ciblée.
dice_sup_50 <- cube_olap %>% filter(Quantite > 50)
plot_olap(dice_sup_50, "Dice - Quantité > 50")
Explication :
Ce dice sélectionne uniquement les ventes où la quantité dépasse 50
unités.
Cela permet de détecter les cas de forte demande ou de succès
commerciaux remarquables.
slice_dice <- cube_olap %>% filter(Annee %in% c(2023, 2024) & Quantite > 40)
plot_olap(slice_dice, "Slice + Dice - 2023-2024 & Qte > 40")
Explication :
Cette vue combine deux filtres : les années 2023 et 2024, et une
quantité minimale de 40.
rollup_acide <- cube_olap %>%
mutate(Fruit = ifelse(Fruit %in% c("citron", "orange"), "acide", Fruit)) %>%
group_by(Zone, Fruit, Annee) %>%
summarise(Quantite = sum(Quantite), .groups = "drop")
plot_olap(rollup_acide, "Roll-up - Fruits acides regroupés")
Explication :
Le roll-up regroupe les fruits acides (orange et citron) sous une même
catégorie appelée « acide ».
drill_down_nord <- cube_olap %>% filter(Zone == "Nord")
plot_olap(drill_down_nord, "Drill-down - Zone Nord")
Explication :
Le drill-down permet de zoomer uniquement sur la zone Nord (supermarchés
s4 et s5).
Conclusion : Les résultats de cette analyse OLAP offrent des insights précieux pour les gestionnaires des supermarchés. Les différentes techniques OLAP permettent d’identifier les produits et les zones géographiques avec les meilleures performances, ainsi que d’examiner l’évolution des ventes au fil du temps. Cette approche pourrait être utilisée pour prendre des décisions stratégiques telles que l’optimisation des stocks, le ciblage des promotions et l’amélioration des stratégies de vente en fonction des tendances observées.