Analyse OLAP des Ventes de Fruits – Projet EFD


- Nom et spécialité du binôme

Noms :
- ALLALI Chakib Khalil
- BENDJERID Mohammed Abdelaziz

Spécialité : Master 1 - Aide à la Décision et Systèmes Intelligents (ADSI)


- Description du dataset utilisé

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


- Chargement et nettoyage des données

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()

- Fonction de visualisation OLAP 3D

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 général (Quantité > 0)

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.

1. Slice (Année = 2025)

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.

2. Dice (Quantité > 50)

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.

3. Slice + Dice (2023-2024 et Quantité > 40)

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.

4. Roll-up (fruits acides regroupés)

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 ».

5. Drill-down (zone Nord)

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.