2.2Schéma en étoile : faits & dimensions
L'essentiel en 30 secondes
- Faits = ce qu'on mesure (ventes, commandes : beaucoup de lignes, des montants) ; dimensions = par quoi on analyse (produits, clients, dates : des libellés).
- Le schéma en étoile place la table de faits au centre et les dimensions autour, reliées en 1:* — c'est LA règle d'architecture de Power BI.
- Ce n'est pas de l'esthétique : l'étoile rend le DAX plus simple, les performances meilleures et les rapports plus fiables ; la table unique est un anti-modèle.
Mini-cas filé — Zineb casse sa table unique en étoile
Zineb, contrôleuse de gestion dans une PME agroalimentaire à Alger, a tout entassé dans une seule grande table « Ventes » : ville, commercial, produit et montants mélangés. Elle applique la règle : elle distingue les faits (montant, quantité) des dimensions (ville, commercial, produit), puis fabrique dans Power Query la dimension Commerciaux (dupliquer la requête, garder la colonne, supprimer les doublons) et de même Villes et Produits. Dans les faits, elle ne garde que les clés et les mesures, relie chaque dimension en 1:* et dispose son étoile en vue Modèle. Elle note le réflexe : définir et tenir la granularité (une ligne = une vente, partout).
Cas autonome de cette section : il revient dans le cours, le schéma, le script et le défi 48h de la section 2.2.
1. Faits & dimensions
Le schéma en étoile est LA règle d'architecture de Power BI, martelée par Microsoft : au centre, la table de faits (les événements mesurables — ventes, commandes ; beaucoup de lignes, des montants) ; autour, les dimensions (les axes d'analyse — produits, clients, dates ; peu de lignes, des libellés). Chaque dimension pointe vers les faits en un-à-plusieurs : le dessin forme une étoile. Zineb retient la phrase clé : faits = ce qu'on mesure ; dimensions = par quoi on analyse.
2. Pourquoi l'étoile
Ce n'est pas de l'esthétique : l'étoile rend le DAX plus simple, les performances meilleures et les rapports plus fiables. À l'inverse, la table unique — tout dans une grande table — « marche » au début, puis le DAX et les performances se dégradent. Zineb investit une heure de modélisation qui lui économisera des jours.
3. Fabriquer les dimensions
Une dimension a une ligne par élément, sans doublon ; Power Query les fabrique en trois clics (dupliquer la requête, garder la colonne, supprimer les doublons). On définit aussi la granularité des faits — une ligne = une vente, partout — et on ne la mélange jamais. Zineb ne garde dans les faits que les clés vers les dimensions et les mesures.
🔎 Exemple concret — 🔎 Exemple concret — Créer une dimension
Zineb extrait la dimension Commerciaux en trois clics :
Dans Power Query, à partir de Ventes :
dupliquer la requête → garder Commercial → Supprimer les doublons
→ dimension Commerciaux (une ligne par commercial)
Faits : ne garder que les clés + mesures ; relier en 1:*.
Lecture : une dimension = une ligne par élément (un commercial une fois), sans doublon.
Leçon : on fabrique les dimensions dans Power Query, on ne les saisit pas à la main.
Vocabulaire de la section
- Table de faits
- Les événements à mesurer : une ligne = une transaction, avec les clés vers les dimensions et les valeurs numériques.
Exemple simple : Zineb garde la table Ventes avec les montants et les clés.
Ce que ce n'est pas : un référentiel de libellés sans événement.
Réflexe : beaucoup de lignes + des montants → faits.
- Table de dimension
- Un axe d'analyse : une ligne = un élément unique, avec ses attributs descriptifs.
Exemple simple : Zineb fabrique les dimensions Produits, Villes et Commerciaux.
Ce que ce n'est pas : des événements répétés avec des montants.
Réflexe : libellés + une ligne par élément → dimension.
- Schéma en étoile
- Faits au centre, dimensions autour, relations 1:* : l'architecture de référence des modèles Power BI.
Exemple simple : Zineb dispose Ventes au centre et ses dimensions autour.
Ce que ce n'est pas : tout dans une seule grande table.
Réflexe : modéliser → penser étoile.
- Granularité
- Le niveau de détail d'une ligne de faits (la vente ? la ligne de commande ? le jour ?).
Exemple simple : Zineb décide : une ligne = une vente, partout.
Ce que ce n'est pas : des lignes à des niveaux de détail mélangés.
Réflexe : définir la granularité consciemment et la tenir.
- Table unique (anti-modèle)
- Tout dans une seule grande table : ça « marche » au début, puis DAX et performances se dégradent.
Exemple simple : Zineb casse sa table unique pour la transformer en étoile.
Ce que ce n'est pas : des faits entourés de dimensions reliées.
Réflexe : table unique = dette à rembourser vite.
En pratique — En pratique — Remodeler vos ventes en étoile
- Analysez votre table de ventes : quelles colonnes sont des FAITS (montant, quantité) et lesquelles décrivent des DIMENSIONS (ville, commercial, produit) ?
- Dans Power Query, créez la dimension Commerciaux : dupliquez la requête Ventes → gardez la colonne Commercial → Supprimer les doublons. Faites de même pour Villes si pertinent.
- Dans la table de faits, ne gardez que les clés et les mesures ; reliez chaque dimension en 1:*.
- Vue Modèle : disposez les faits au centre, les dimensions autour — votre première étoile. Vérifiez qu'un visuel Commercial × Montant fonctionne toujours.
Script pas-à-pas — construire une étoile comme Zineb (10 min)
1) Listez vos colonnes et classez-les : montants/quantités = faits, libellés = dimensions. 2) Dupliquez la requête Ventes dans Power Query, gardez la colonne Commercial, supprimez les doublons : la dimension Commerciaux est créée. 3) Recommencez pour Villes et Produits. 4) Dans Ventes, ne gardez que les clés et les mesures. 5) Vue Modèle : faits au centre, dimensions autour, chaque lien en 1:*, puis vérifiez un visuel Commercial × Montant.
Une dimension doit avoir une ligne par élément : si un doublon subsiste, le 1:* sera refusé.
Modèle copier-coller — mon plan d'étoile
Faits (ce qu'on mesure) : ___ (ex. Ventes : montant, quantité — clés + mesures)
Dimensions (par quoi on analyse) : ___ (Produits, Villes, Commerciaux, Dates)
Granularité des faits : une ligne = ___ (ex. une vente), partout
Chaque dimension → faits en 1:*
Étoile : faits au centre, dimensions autour. Anti-modèle : la table unique.
Extraire Commerciaux
Zineb duplique Ventes, garde Commercial et supprime les doublons : une dimension propre en trois clics.
Extraire Villes
Zineb répète l'extraction pour Villes : chaque axe d'analyse devient une dimension distincte.
Casser la table unique
Une seule grande table mélangeait tout : Zineb la sépare en faits + dimensions pour un DAX simple.
Tenir la granularité
Zineb fixe une ligne = une vente et s'y tient : les cumuls et ratios restent fiables.
✓ Bonnes pratiques
- Penser faits = ce qu'on mesure, dimensions = par quoi on analyse.
- Fabriquer les dimensions dans Power Query (dupliquer → garder la colonne → supprimer les doublons).
- Définir et tenir la granularité des faits (une ligne = une vente, partout).
✗ Pièges fréquents
- Rester en table unique (DAX et performances se dégradent).
- Mélanger les granularités dans la table de faits.
- Laisser des doublons dans une dimension.
Points clés à retenir
- Faits = ce qu'on mesure ; dimensions = par quoi on analyse.
- L'étoile n'est pas optionnelle : DAX simple, performances et fiabilité en dépendent.
- Une dimension = une ligne par élément, sans doublons — Power Query les fabrique en trois clics.
- Définissez la granularité des faits et tenez-la : une ligne = une vente, partout.
Défi 48h — appliquez demain
Remodelez une table de Zineb en étoile : classez ses colonnes en faits et dimensions, créez au moins une dimension dans Power Query (dupliquer → garder la colonne → supprimer les doublons) et disposez faits au centre et dimensions autour en vue Modèle.
- Je distingue une table de faits d'une table de dimension.
- Je fabrique une dimension dans Power Query sans doublon.
- Je dispose faits et dimensions en étoile avec des relations 1:*.
Questions fréquentes
Ma table unique fonctionne très bien : pourquoi changer ?
Elle fonctionne jusqu'aux premiers calculs sophistiqués (time intelligence, ratios par dimension) et aux premiers millions de lignes. Une table unique complique le DAX, dégrade les performances et fragilise les rapports (risques de doubles comptages). L'étoile coûte une heure maintenant et économise des jours ensuite — le conseil unanime des praticiens et de Microsoft.
Où va la table de dates dans ce schéma ?
C'est une dimension à part entière — si importante qu'elle a sa section (2.5) : reliée aux faits par la date (Dates[Date] → Ventes[Date] en 1:*), elle alimente toute l'analyse temporelle. Elle doit être continue (une ligne par jour), marquée officiellement et unique pour tout le modèle.
Qu'est-ce que le schéma en étoile ?