🎯 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
- Cliquer sur la 3ème icône à gauche : Vue Modèle 🔗
- Power BI a parfois détecté des relations automatiquement (lignes pointillées). Vérifiez-les.
- 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 source | Colonne | Table cible | Colonne | Cardinalité |
|---|---|---|---|---|
| lignes_commande | id_commande | commandes | id | * → 1 |
| lignes_commande | id_produit | produits | id | * → 1 |
| commandes | id_client | clients | id | * → 1 |
| commandes | id_commercial | commerciaux | id | * → 1 |
| produits | id_categorie | categories | id | * → 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
- Glisser
Calendrier[Date]verscommandes[date_commande] - Cardinalité : 1 → * (une date peut avoir plusieurs commandes)
- 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