Tout le monde commence pareil : un export, une grande table où chaque ligne porte à la fois la vente, le client, le produit et la date, et des visuels branchés directement dessus. Ça marche, deux semaines. Puis un total double sans raison, un filtre cesse de filtrer, la comparaison avec l’an dernier devient une expédition. Ce moment est le plus important de votre progression : c’est celui où l’on arrête de faire des rapports pour commencer à construire des modèles.
Pourquoi la table plate finit toujours par mentir
Une table plate répète tout. Les attributs du client sont recopiés sur chacune de ses lignes de vente : comptez les clients sans y penser et vous comptez des lignes ; faites la moyenne d’un attribut client et chaque gros acheteur pèse autant que son volume de commandes. Premiers mensonges, presque invisibles.
Le mensonge suivant arrive avec la deuxième source. Comparer les ventes aux objectifs ? Les objectifs sont mensuels par région, les ventes à la ligne de ticket : deux granularités forcées dans une même table, et les montants se dupliquent ou disparaissent selon la jointure. Une table plate ne sait pas dire par quoi elle se mesure. Le schéma en étoile le dit structurellement : des faits au centre, des dimensions autour, des relations qui font circuler les filtres de façon prévisible.
Faits et dimensions : des définitions qui tiennent
Un fait est un événement que l’on mesure : une vente, un paiement, une livraison. La table de faits en stocke une ligne par événement, c’est son grain, avec les nombres à agréger et les clés vers les dimensions. Une dimension est un axe d’analyse : elle répond au « par quoi » de vos questions, une ligne par entité, des colonnes qui décrivent. Le test infaillible tient dans la question métier elle-même. « Le CA par région et par mois » : le CA se somme, c’est un fait ; la région et le mois découpent, ce sont des dimensions.
Source brute
Une ligne de vente répète le client, le produit, la date, la région et les montants.
Table de faits
On garde le grain mesurable : une ligne de commande, les clés, quantité, montant, remise.
Dimensions
Clients, Produits et Dates décrivent les axes d'analyse et filtrent les faits en sens unique.
Le modèle devient lisible parce que chaque table a un rôle unique : mesurer ou décrire.
- Ventes, table de faits : une ligne par ligne de commande, avec quantité, montant, remise, et les clés vers le client, le produit, la date.
- Clients, dimension : une ligne par client, avec nom, segment, région, canal d’acquisition.
- Produits, dimension : une ligne par référence, avec catégorie, gamme, prix catalogue.
- Dates, dimension : une ligne par jour, avec mois, trimestre, année, jour de semaine, jour ouvré.
Découper sa table plate, concrètement
Le découpage se fait dans Power Query, avant le modèle, jamais à coups de DAX après. Six étapes :
- 1Écrire le grain de la table de faits« Une ligne = une ligne de commande ». Si la phrase ne vient pas, le modèle ne viendra pas non plus.
- 2Trier les colonnes par rôleCe qui se mesure reste dans les faits ; ce qui décrit part en dimension.
- 3Créer les dimensions par référenceGardez la clé et les colonnes descriptives, puis supprimez les doublons.
- 4Alléger la table de faitsGardez les clés et les colonnes de mesure ; supprimez les descriptions devenues redondantes.
- 5Créer les relations un-à-plusieursCôté un : la dimension. Côté plusieurs : les faits. Filtre en sens unique vers les faits.
- 6Masquer les clés et écrire les mesuresLe modèle est prêt quand l'utilisateur voit le métier, pas la plomberie technique.
Piège 1, La relation plusieurs-à-plusieurs
Power BI vous laissera relier deux colonnes qui contiennent l’une et l’autre des doublons. Ce n’est presque jamais une bonne nouvelle : la relation plusieurs-à-plusieurs est le symptôme d’un grain mal défini ou d’une dimension manquante, et elle rend la propagation des filtres difficile à prédire, donc les totaux difficiles à défendre. Retenez surtout la règle qui évite le piège en amont : deux tables de faits, ventes et objectifs, par exemple, ne se relient jamais entre elles ; elles partagent des dimensions communes (Dates, Régions), et c’est par elles que la comparaison se fait.
Piège 2, Des colonnes de fait dans les dimensions
Ajouter « CA total » comme colonne de la table Clients : l’idée vient vite, et elle coûte cher. Cette colonne est figée à l’actualisation, votre segment de dates ne la changera jamais, elle duplique une logique qui existe déjà ailleurs, et elle finira par contredire la mesure officielle. La règle : une dimension décrit, elle ne compte pas. Tout ce qui s’agrège vit dans une table de faits ou dans une mesure. La nuance qui éclaire la frontière : le prix catalogue est un attribut du produit, dimension ; le prix réellement payé change à chaque transaction, fait.
Piège 3, Pas de table de dates dédiée
Le piège le plus répandu, parce que tout semble fonctionner sans elle : Power BI génère des hiérarchies de dates automatiques, une table cachée par colonne de date, qui alourdissent le modèle sans rien structurer. Une table de dates dédiée change la donne pour trois raisons. Un : un seul calendrier filtre toutes vos tables de faits d’un même geste, ventes et objectifs se comparent enfin sur le même axe. Deux : elle porte vos attributs métier, exercice fiscal, semaines, jours ouvrés, que personne ne génère automatiquement. Trois : la time intelligence (TOTALYTD, SAMEPERIODLASTYEAR, DATEADD) exige un calendrier contigu, un jour par ligne et sans trou, marqué comme table de dates ; sans cela, ces fonctions peuvent rendre des résultats faux sans le moindre message d’erreur. Désactivez la date automatique, construisez votre calendrier, reliez-le à chaque table de faits.
| Table plate | Schéma en étoile | |
|---|---|---|
| Totaux | Doublons dès la deuxième granularité | Justes par construction |
| Décomptes (clients, produits) | Des lignes déguisées en entités | Une ligne par entité : le compte est bon |
| Plusieurs sources (ventes + objectifs) | Jointures fragiles, montants dupliqués | Dimensions partagées, comparaison native |
| Time intelligence | Bricolée, souvent fausse | Native, portée par la table de dates |
| Mesures DAX | Longues, défensives | Courtes, lisibles |
| Évolution | Des colonnes qui s’empilent | Une dimension ou une mesure à la fois |
À retenir
Un rapport affiche des chiffres ; un modèle garantit qu’ils sont justes. Faits au centre, dimensions autour, table de dates toujours : l’étoile n’est pas un luxe d’expert, c’est la condition de la confiance dans vos chiffres.
Par où continuer
Reprenez votre dernier rapport et posez-lui la question du grain : si la réponse ne tient pas en une phrase, vous savez ce qu’il vous reste à faire. Ensuite, cherchez les colonnes qui se répètent inutilement : clients, produits, dates, régions. Ce sont souvent vos premières dimensions.
Écrit par Dylan Arnaud, fondateur de Datafuji. Les exemples techniques sont conçus pour être relus, testés et adaptés dans un modèle Power BI réel.