Des tables qui se parlent
En séance 2, on a fusionné des tables pour calculer un coût : 2 140 fois la catégorie recopiée. Power BI propose mieux : laisser chaque table à sa place et les relier. Un filtre posé sur une catégorie de produits traverse alors le modèle jusqu'aux ventes. Cette séance construit le modèle Datashop que tu utiliseras jusqu'à la fin.
Le fichier de la séance : datashop-modele.xlsx. Six tables déjà propres — Commandes, Lignes_commande, Produits, Clients, Points_de_vente, Retours — rangées chacune dans un tableau Excel. Ici, on peut les charger directement : le travail de la séance se fait dans la vue Modèle.
Dans le navigateur : Toutes licences Créer › Excel › Charger le fichier (ou Parcourir OneDrive), datashop-modele.xlsx, coche les six tables, puis Transformer les données. Dans Power Query, vérifie que Date et Date_livraison sont de type Date (icône calendrier dans l'en-tête ; sinon, Transformer › Type de données › Date). En bas, flèche de Créer un rapport › Créer un modèle sémantique uniquement, nom Datashop : la vue de modèle s'ouvre. Plus tard, pour y revenir : Mon espace de travail, … du modèle › Ouvrir le modèle sémantique.
Faits et dimensions
Ce qui se mesure, et ce qui sert à ranger la mesureToutes les tables d'un modèle ne jouent pas le même rôle.
| Table de faits | Table de dimension | |
|---|---|---|
| Contient | Des événements : une vente, un retour | Des descriptions : un produit, un client, un jour |
| Taille | Beaucoup de lignes, qui grandissent chaque jour | Peu de lignes, stables |
| Colonnes typiques | Quantités, montants, et des clés | Libellés, catégories, régions |
| Chez Datashop | Lignes_commande (2 140), Commandes (966), Retours (42) | Produits (46), Clients (140), Points_de_vente (6), le calendrier |
On additionne les colonnes des faits ; on découpe (on filtre, on regroupe) par les colonnes des dimensions. Le modèle idéal a la forme d'une étoile : les faits au centre, les dimensions autour, chacune reliée aux faits par une clé.
Datashop n'est pas une étoile parfaite, et c'est le cas de presque toutes les entreprises : Commandes est l'en-tête d'une commande (sa date, son canal, son client), Lignes_commande son détail (les produits). Les deux sont des faits, reliés l'un à l'autre. On garde cette structure : elle est fidèle à la réalité, et Power BI la gère très bien.
Relier les tables
Glisser une clé sur une autre- Crée le modèle sémantique avec les six tables de
datashop-modele.xlsx(encadré ci-dessus) : la vue de modèle s'ouvre, sans aucune relation. - Option : Gérer les relations › Détection automatique en propose plusieurs. Relis-les toutes, la détection se trompe (une relation un à un, une autre inactive) et en oublie (Commandes → Points_de_vente).
- Glisse
Produits[Référence]surLignes_commande[Référence]. Une ligne apparaît, avec un1côté produits et un*côté lignes. - Même geste pour les autres clés, jusqu'à obtenir les relations du tableau ci-dessous. Gérer les relations les liste toutes ; Nouvelle relation en crée une par la boîte (à partir de la table, vers la table, cardinalité, sens du filtre).
| Du côté « 1 » (la dimension) | Vers le côté « plusieurs » | Clé |
|---|---|---|
Produits | Lignes_commande | Référence |
Commandes | Lignes_commande | N_Commande |
Clients | Commandes | ID_Client |
Points_de_vente | Commandes | Code → Point_de_vente |
Commandes | Retours | N_Commande |
« Le chiffre d'affaires par catégorie, sans les annulations »
Dans la vue Rapport, pose un visuel Table : Produits[Catégorie] et la somme de Lignes_commande[Total_ligne_HT]. Puis, dans le volet Filtres, filtre ce visuel sur Commandes[Statut] : tout sauf « Annulée ».
Commandes, la somme porte sur Lignes_commande, et le regroupement vient de Produits : trois tables, aucune fusion. C'est la relation qui fait voyager le filtre. Retire-la un instant : que devient le tableau ?Voir la solution
Cardinalité et sens du filtre
Qui filtre qui, et pourquoi dans ce sensDouble-clique sur une relation pour ouvrir sa fenêtre. Deux réglages comptent.
La cardinalité
- Un à plusieurs (1:*) — le cas normal. Un produit, plusieurs lignes vendues. La colonne du côté « 1 » ne doit contenir aucun doublon.
- Un à un (1:1) — rare : les deux tables pourraient souvent n'en faire qu'une.
- Plusieurs à plusieurs (*:*) — à éviter tant qu'on ne sait pas exactement pourquoi on l'utilise : les totaux deviennent difficiles à lire.
Le sens du filtre croisé
Par défaut, le filtre va du côté « 1 » vers le côté « plusieurs » : choisir la catégorie Écrans filtre les lignes vendues. La petite flèche au milieu de la relation montre ce sens.
Le filtre bidirectionnel (Les deux) fait aussi remonter le filtre des ventes vers les produits. Tentant pour « que tout filtre tout » ; mais sur un modèle en étoile, il crée des chemins ambigus et des résultats surprenants. Règle de ce cours : sens unique partout.
La table de dates
La dimension que tout modèle doit avoirPour analyser dans le temps — par mois, par trimestre, cette année contre l'an dernier — Power BI a besoin d'une table qui contient chaque jour, sans trou, une seule fois. On la crée en DAX.
- Modélisation › Nouvelle table, puis :
Calendrier = CALENDAR(DATE(2025, 1, 1), DATE(2026, 12, 31))
- Dans cette table, Nouvelle colonne, trois fois :
Année = YEAR(Calendrier[Date])
N° mois = MONTH(Calendrier[Date])
Mois = FORMAT(Calendrier[Date], "mmmm")
- Sélectionne la colonne
Moisdans le volet Données, puis, dans le volet Propriétés, Trier par colonne :N° mois. Janvier passe enfin avant février. - Volet Données, … de la table
Calendrier› Marquer comme table de dates, colonneDate. Si la commande manque, la colonne n'est pas de type Date : Propriétés › Type de données : Date, puis recommence. - Relie
Calendrier[Date]àCommandes[Date](un à plusieurs).
Virgule ou point-virgule ? Ce cours écrit le DAX avec des virgules, comme la documentation de Microsoft. Si Power BI souligne tes virgules, ton poste utilise les séparateurs régionaux : écris ; à la place, ou change le réglage dans Fichier › Options › Paramètres régionaux.
« La saisonnalité 2026, dans l'ordre des mois »
Construis un histogramme : Calendrier[Mois] en axe, somme de Commandes[Total_HT] en valeur, filtre Calendrier[Année] = 2026 et Commandes[Statut] ≠ Annulée. Quel est le meilleur mois, le plus faible ?
Voir la solution
Calendrier compte 730 lignes. Meilleur mois 2026 : décembre, 29 668,93 € ; le plus faible : août, 10 560,32 €. Total de l'année : 234 290,66 €.
Ranger le modèle
Pour que celui qui construit le rapport ne se trompe pas de colonneUn modèle se lit dans le volet Données. S'il montre trente colonnes dont la moitié sont des clés techniques, quelqu'un finira par glisser Lignes_commande[Référence] au lieu de Produits[Référence] — et obtiendra un visuel faux.
- Masquer les clés du côté « plusieurs » (clic droit › Masquer dans la vue rapport) : on découpe toujours par la dimension.
- Formater à la source :
Total_HTen devise, deux décimales. Chaque visuel en hérite. - Ne pas additionner ce qui ne s'additionne pas :
Année,Surface_m2ou un identifiant → Résumé › Ne pas résumer. - Catégorie de données :
Clients[Ville]→ Ville, pour qu'une carte la place au bon endroit. - Une table pour les mesures (séance 4) : toutes au même endroit, rangées en dossiers d'affichage.
Diagnostiquer un modèle
Trois symptômes, trois causes| Symptôme dans le visuel | Cause la plus probable | Où regarder |
|---|---|---|
| Le même montant sur toutes les lignes | Pas de relation (ou relation dans le mauvais sens) entre l'axe et la mesure | Vue Modèle |
| Une ligne « (Vide) » | Des clés du côté « plusieurs » absentes du côté « 1 » | Anti gauche dans Power Query (séance 2) |
| Un total plus grand que la somme attendue | Des doublons du côté « 1 », ou une relation plusieurs à plusieurs | Distribution de la clé |
« Votre rapport dit que chaque région fait 435 900,85 € »
Un collègue a construit un visuel Clients[Région] × somme de Commandes[Total_HT] (annulées exclues). Les quatre régions affichent 435 900,85 €. Trouve la cause, répare, et donne le vrai CA de chaque région.
Voir la solution
- Vue Modèle : la relation
Clients[ID_Client]→Commandes[ID_Client]manque. La créer (1 à plusieurs, sens unique).
Quiz de fin de séance
Six questions pour vérifier que c'est acquisSix questions sur le modèle, dont deux sur le schéma.
Le modèle est prêt à recevoir des mesures. La séance 4 écrit celles que la direction de Datashop regarde chaque lundi : CA, marge, évolution, part du total.
STOP exercices. Tu as lu tout l'onglet et répondu à ses questions : arrête-toi ici, ne passe pas encore à l'onglet suivant. En cours, ton intervenant montre l'essentiel sur son écran, puis vous refaites ensemble :
- Charger et relier — atelier 2 : le modèle chargé et relié
- Le calendrier — atelier 3 : Calendrier marqué et relié
Tu travailles seul ? Fais ces exercices maintenant, sur datashop-modele.xlsx (ton modèle sémantique) (page Ateliers), puis passe à l'onglet suivant.