Girault Conceptions

Power BI — Master 2 PPA Supply Chain

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

🔗 Modélisation des données et relations

Construire un schéma en étoile, créer les relations, ajouter une table Calendrier DAX.

⏱ Durée 2h
📊 Niveau Intermédiaire
🔌 Sources PostgreSQL commerce (7 tables)

🎓 Objectifs pédagogiques

🎯 Contexte

Vos tables sont chargées et nettoyées. Pour qu'elles "parlent" entre elles, il faut créer des relations. Vous allez construire un schéma en étoile autour de la table de faits lignes_commande entourée des dimensions clients, produits, commerciaux, dates.

📋 Prérequis

  • TP 03 terminé — tables PostgreSQL chargées et propres
  • Comprendre les notions clé primaire / clé étrangère

🛠️ Étape 1 — Vue Modèle

  1. Cliquer sur la 3ème icône à gauche : Vue Modèle 🔗
  2. Power BI a parfois détecté des relations automatiquement (lignes pointillées). Vérifiez-les.
  3. Cliquer-droit sur l'arrière-plan → Réorganiser la disposition

🛠️ Étape 2 — Créer les relations manuellement

Faire glisser la clé étrangère vers la clé primaire pour créer une relation :

Table sourceColonneTable cibleColonneCardinalité
lignes_commandeid_commandecommandesid* → 1
lignes_commandeid_produitproduitsid* → 1
commandesid_clientclientsid* → 1
commandesid_commercialcommerciauxid* → 1
produitsid_categoriecategoriesid* → 1

🛠️ Étape 3 — Créer une table Calendrier (Date Table)

Pour les calculs de time intelligence, il faut une table de dates dédiée.

Modélisation > Nouvelle table :

Calendrier =
ADDCOLUMNS(
    CALENDAR( DATE(2023,1,1), DATE(2026,12,31) ),
    "Annee",        YEAR([Date]),
    "Mois",         MONTH([Date]),
    "NomMois",      FORMAT([Date], "MMMM"),
    "Trimestre",    "T" & QUARTER([Date]),
    "NumSemaine",   WEEKNUM([Date], 21),
    "JourSemaine",  WEEKDAY([Date], 2),
    "NomJour",      FORMAT([Date], "dddd"),
    "EstWeekend",   IF(WEEKDAY([Date], 2) > 5, "Weekend", "Semaine")
)

Puis : Outils de table > Marquer comme table de dates → colonne Date.

🛠️ Étape 4 — Relier Calendrier à la table de faits

  1. Glisser Calendrier[Date] vers commandes[date_commande]
  2. Cardinalité : 1 → * (une date peut avoir plusieurs commandes)
  3. Direction du filtre : Unique (Calendrier filtre commandes)

🧠 À retenir : le schéma en étoile

  • Table de faits : événements mesurables (commandes, ventes, livraisons)
  • Tables de dimensions : contextes (qui, quoi, quand, où)
  • Toujours * → 1 de la faits vers les dimensions
  • Éviter les relations many-to-many sauf cas exceptionnel
  • Une seule table de dates active par modèle

📊 Résultat attendu

Diagramme en étoile clair avec lignes_commande au centre, 5 dimensions autour et la table Calendrier reliée à commandes[date_commande].

✅ Critères d'évaluation

  • Toutes les relations créées avec bonne cardinalité
  • Table Calendrier présente et marquée comme table de dates
  • Schéma en étoile visuellement organisé
  • Pas de relations many-to-many

📚 Pour aller plus loin

PDF : S4 — Modélisation des données / relations