Girault Conceptions

Power BI — Master 2 PPA Supply Chain

← Retour à la liste des TP
Travail Pratique · Séance S11

📦 Bonus — Révision complète Maven Market

TP transversal de révision sur le jeu de données Maven Market : Power Query, modélisation, DAX + Time Intelligence et rapport interactif. Énoncé PDF et 8 fichiers à télécharger.

⏱ Durée 8h-12h
📊 Niveau Avancé
🔌 Sources CSV Maven Market (8 fichiers)

🎓 Objectifs pédagogiques

🎯 Contexte — TP de révision transversal

Ce TP bonus rejoue, de bout en bout, l'ensemble des compétences vues pendant le semestre, mais sur un nouveau jeu de données : Maven Market, une chaîne de distribution implantée aux États-Unis, au Canada et au Mexique. C'est le jumeau de NordSupply (produits, clients, magasins, régions, transactions, retours) : idéal pour vérifier que vous savez refaire la chaîne complète sans guidage pas-à-pas.

Objectif : construire seul·e un tableau de bord commercial « Topline Performance » couvrant Power Query, la modélisation en étoile, les mesures DAX (dont la Time Intelligence) et un rapport interactif.

⬇️ Téléchargements du TP

Énoncé complet au format PDF :

Les 8 fichiers de données (à enregistrer dans un même dossier local MavenMarket) :

💡 Les deux fichiers Transactions (1997 et 1998) ont la même structure : c'est l'occasion d'utiliser le connecteur Dossier de Power Query pour les combiner automatiquement.

🗂️ Le modèle de données (schéma réel)

TableRôleColonnes principales
TransactionsFaits — ventestransaction_date, stock_date, product_id, customer_id, store_id, quantity
ReturnsFaits — retoursreturn_date, product_id, store_id, quantity
ProductsDimension produitproduct_id, product_brand, product_name, product_retail_price, product_cost
CustomersDimension clientcustomer_id, first_name, last_name, birthdate, gender, customer_country
StoresDimension magasinstore_id, region_id, store_type, store_city, store_country
RegionsDimension régionregion_id, sales_district, sales_region
CalendrierDimension tempsdate

🔧 Phase 1 — Préparation des données (Power Query)

  1. Importer les 6 tables simples (Calendar, Customers, Products, Regions, Returns, Stores) via Texte/CSV.
  2. Pour les ventes : Obtenir les données > Dossier → pointer le dossier contenant les 2 fichiers Transactions_1997/1998Combiner et transformer.
  3. Vérifier/forcer les types (dates, décimaux pour prix/coût, entiers pour quantités).
  4. Table Customers — colonnes personnalisées :
// Nom complet
= [first_name] & " " & [last_name]

// Année de naissance
= Date.Year([birthdate])

Table Products — prix remisé (-10 %) :

= [product_retail_price] * 0.9

Table Calendrier (à partir de la colonne date) — ajouter les colonnes temporelles :

Année      = Date.Year([date])
Mois       = Date.Month([date])
NomMois    = Date.MonthName([date])
Trimestre  = "T" & Text.From(Date.QuarterOfYear([date]))
NomJour    = Date.DayOfWeekName([date])
EstWeekend = if Date.DayOfWeek([date], Day.Monday) >= 5 then "Y" else "N"

🔗 Phase 2 — Modélisation (schéma en étoile)

Table « plusieurs »CléTable « un »
Transactionsproduct_idProducts
Transactionscustomer_idCustomers
Transactionsstore_idStores
Transactionstransaction_dateCalendrier (date)
Returnsproduct_idProducts
Returnsstore_idStores
Returnsreturn_dateCalendrier (date)
Storesregion_idRegions
  • Marquer Calendrier comme table de dates (indispensable à la Time Intelligence).
  • Masquer les colonnes clés de la vue Rapport.

🧮 Phase 3 — Mesures DAX & Time Intelligence

Regrouper les mesures dans une table dédiée _Mesures.

Mesures de base

Quantity Sold     = SUM(Transactions[quantity])
Total Transactions = COUNTROWS(Transactions)
Quantity Returned = SUM(Returns[quantity])
Total Returns     = COUNTROWS(Returns)
Return Rate       = DIVIDE([Quantity Returned], [Quantity Sold], "Aucune vente")

Chiffre d'affaires, coût, marge

Total Revenue =
SUMX(Transactions, Transactions[quantity] * RELATED(Products[product_retail_price]))

Total Cost =
SUMX(Transactions, Transactions[quantity] * RELATED(Products[product_cost]))

Total Profit  = [Total Revenue] - [Total Cost]
Profit Margin = DIVIDE([Total Profit], [Total Revenue], 0)

Contexte de filtre & Time Intelligence

Weekend Transactions =
CALCULATE([Total Transactions], Calendrier[EstWeekend] = "Y")

Revenue 60 jours =
CALCULATE([Total Revenue],
  DATESINPERIOD(Calendrier[date], MAX(Calendrier[date]), -60, DAY))

Last Month Revenue =
CALCULATE([Total Revenue], DATEADD(Calendrier[date], -1, MONTH))

Revenue YTD = TOTALYTD([Total Revenue], Calendrier[date])

Revenue N-1 =
CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Calendrier[date]))

Revenue Target = [Last Month Revenue] * 1.1

Rang Marque =
RANKX(ALL(Products[product_brand]), [Total Revenue], , DESC)

💡 Sachez expliquer la différence entre contexte de ligne (SUMX) et contexte de filtre (CALCULATE), et le rôle de RELATED.

📊 Phase 4 — Rapport « Topline Performance »

  • En-tête avec titre + logo.
  • Cartes KPI : Total Transactions, Total Profit, Total Returns (avec tendance vs mois précédent).
  • Matrice transactions/profit par product_brand avec mise en forme conditionnelle (barres de données).
  • Carte géographique par store_country / sales_region.
  • Treemap par marque, graphique en courbes du CA dans le temps.
  • Jauge CA réel vs Revenue Target.
  • Segments (année, mois, pays), signets + boutons de navigation.

🏅 Compléments obligatoires (pour couvrir 100 % du programme)

  • Drillthrough vers une page de détail produit ou magasin.
  • RLS : un rôle filtrant par store_country (ex. un manager ne voit que son pays).
  • Publication sur Power BI Service + actualisation planifiée.

✅ Critères d'évaluation (sur 20)

CritèrePoints
Préparation des données (types, colonnes, dossier combiné)/4
Modélisation en étoile + table de dates/4
Mesures DAX (base + ≥ 3 Time Intelligence)/5
Rapport & visuels (lisibilité, mise en forme conditionnelle)/4
Interactivité (segments, signets, interactions)/2
Qualité globale & restitution/1
Bonus (drillthrough · RLS · publication)+1

📚 Pour aller plus loin

Cette révision rebalaie les notions des séances S3 à S9. Reportez-vous aux PDF de cours correspondants en cas de blocage, et comparez votre démarche à celle suivie sur NordSupply.