CK Labs — Head of Data & Analytics, Sephora
Formation Power BI
Module 6 sur 8 · Modélisation simple
Fil rouge : TheLook e-commerce
Modélisation simple : clés, cardinalité, schéma en étoile
Relier les tables plutôt que tout entasser dans un fichier plat. La clé qui relie, la cardinalité qui cadre, et le schéma en étoile qui rend les calculs justes.
Module 6 / 8 Modélisation Schéma en étoile
Support 0
Intro
Pour qui, pourquoi Power BI, comment suivre.
Module 1
Le piège Excel
Pourquoi le reporting manuel vous enferme.
Module 2
Pourquoi Power BI
Le dernier kilomètre : de la donnée à la décision.
Module 3
Charger un fichier
Power Query : importer, nettoyer, fiabiliser.
Module 4
Découvrir & explorer
Métriques, dimensions, slicers, sanity check.
Module 5
DAX
Colonne vs mesure, DIVIDE, CALCULATE.
Module 6
Modélisation simple
Clés, cardinalité, schéma en étoile.
Module 7
Modélisation complexe
Multi-sources, calendrier, CAC / ROAS / budget.
Module 8
Récap & aide-mémoire
Fiches DAX, étoile, bonnes pratiques.
Bonus
Power BI & IA
L'ère agentique : piloter, mesurer, arbitrer.
À quoi sert ce module
Un modèle propre vaut mieux qu'un gros fichier plat. Ce module apprend à relier les tables de TheLook par des clés, à comprendre la cardinalité, et à poser un schéma en étoile — la structure qui rend les calculs justes, rapides et faciles à faire évoluer.
6
Relier les tables : la modélisation en étoile

Pourquoi ne pas tout mettre dans une seule table ?

La tentation du débutant : aplatir toutes les données dans un immense fichier avec une RechercheV par-ci, une RechercheV par-là. Ça marche… jusqu'à ce que ça casse. Les données se dupliquent, les mises à jour deviennent un cauchemar, et le moindre changement oblige à tout refaire.

Power BI travaille autrement : on garde les tables séparées et on les relie. La table de faits contient les événements (les ventes), les tables de dimensions contiennent le contexte (qui, quel canal, quand). On croise à la demande, sans jamais dupliquer.

Faits et dimensions

Table de faits
SRC_ORDER_ITEMS
Les événements mesurables : chaque ligne = un article vendu, avec sale_price, cost, margin. C'est le centre de l'étoile.
Tables de dimensions
SRC_USERS, DIM_CANAL, DIM_DATE
Le contexte : qui est le client, quel canal, quelle date. Elles décrivent les faits et servent d'axes d'analyse.

La clé de jointure

Relier deux tables, c'est déclarer qu'une colonne de l'une correspond à une colonne de l'autre : la clé. Sur TheLook, la table de faits porte un user_id ; la table clients porte aussi un user_id. On relie les deux sur cette clé, et Power BI sait recoller le bon client à chaque ligne de vente.

SRC_USERS (dimension)
user_idcountry
1001France
1002Belgique
relation sur user_id (1:N)
SRC_ORDER_ITEMS (faits)
item_iduser_id
500011001
500021001
500031002

Les pays « France » et « Belgique » ci-dessus illustrent le principe (les vraies valeurs viennent de la colonne country). Le point important : un même user_id apparaît une seule fois côté clients, mais plusieurs fois côté ventes — c'est la cardinalité.

La cardinalité : un-à-plusieurs (1:N)

La cardinalité décrit combien de lignes se correspondent de chaque côté. Sur TheLook, un client peut passer plusieurs commandes : une ligne côté clients, plusieurs côté ventes. C'est une relation un-à-plusieurs (1:N) — la plus courante et la plus saine. La dimension est du côté « 1 », les faits du côté « N ».

CardinalitéSensÀ faire
1:NUne dimension, plusieurs faits (1 client → N ventes)La norme. C'est ce qu'on veut.
1:1Une ligne d'un côté = une ligne de l'autreRare. Souvent signe que les deux tables devraient être fusionnées.
N:NPlusieurs des deux côtésÀ éviter : source de doublons et de chiffres faux. On la contourne par une table de dimension propre.
Le piège des doublons
Si la clé n'est pas unique côté dimension, une vente peut se dupliquer et gonfler artificiellement le CA. Avant de relier, posez-vous toujours : ma clé est-elle bien unique du côté de la table de dimension ? Un user_id doit apparaître une seule fois dans SRC_USERS.

Vérifier l'unicité d'une clé, concrètement

Deux réflexes simples sur TheLook pour s'assurer que user_id est unique dans SRC_USERS :

Corriger un doublon se fait en amont, dans Power Query (supprimer les doublons sur la colonne clé), pas en bricolant le visuel après coup. On répare la source, jamais le symptôme.

Un gros fichier plat vs une étoile

Un seul fichier platSchéma en étoile
DonnéesDupliquées à chaque ligne (le nom du client répété partout)Stockées une fois, reliées par une clé
Mise à jourFragile : une correction à répercuter partoutUn seul endroit à changer
CalculsLourds, risque de doubles comptagesJustes et rapides
ÉvolutivitéTout casse quand on ajoute une sourceOn branche une dimension de plus, sans toucher au reste

Créer la dimension des canaux : DIM_CANAL

Le canal (traffic_source) vit dans la table de faits, mais pour en faire un axe d'analyse propre et le relier plus tard au marketing et au budget, on crée une petite table de dimension dédiée. Dans Power Query, une requête vide avec ce code M :

let
    Source = Table.FromRows(
        {
            {"Search"},
            {"Organic"},
            {"Email"},
            {"Display"},
            {"Facebook"}
        },
        type table [Canal = text]
    )
in Source

On relie ensuite DIM_CANAL[Canal] à SRC_ORDER_ITEMS[traffic_source] en 1:N. Désormais, filtrer sur un canal filtre toutes les ventes de ce canal.

Cohérence des noms — un détail qui casse tout
Les noms de canaux doivent être exactement identiques partout, casse comprise : Search, Organic, Email, Display, Facebook. « search » ≠ « Search ». La moindre variation empêche la relation de fonctionner et fait disparaître des lignes du résultat. C'est LA source d'erreur silencieuse à traquer.

Le schéma en étoile

Une fois les dimensions reliées à la table de faits, on obtient une étoile : les faits au centre, les dimensions autour, chacune reliée par une clé en 1:N. Aucune dimension n'est reliée à une autre directement — tout passe par le centre.

Au centre
Les faits
  • SRC_ORDER_ITEMS
  • 1 ligne = 1 article vendu
  • Porte les clés + les valeurs
Autour
Les dimensions
  • SRC_USERS (clients)
  • DIM_CANAL (canaux)
  • DIM_DATE (dates, au module 7)
Le bénéfice
Ce que ça débloque
  • Calculs justes et rapides
  • Filtres qui se propagent
  • Modèle facile à étendre

Le sens du filtre va de la dimension vers les faits : choisir un client, un canal ou une date filtre les ventes correspondantes, et toutes vos mesures (CA Réel, Marge, CAC…) se recalculent dans ce contexte. C'est exactement pour ça qu'on a séparé les tables.

Bonne pratique
Marquez vos tables de dimension comme telles, et masquez les colonnes qui ne servent qu'aux relations (par exemple month dans la table de faits). Un modèle lisible, c'est un modèle où l'utilisateur ne voit que ce qui l'aide à décider.
Fiche mémo — modélisation en étoile
Table de faits
Les événements mesurables (SRC_ORDER_ITEMS). Au centre de l'étoile.
Table de dimension
Le contexte (clients, canaux, dates). Autour, reliée par une clé.
Clé de jointure
La colonne commune : user_id ↔ user_id, Canal ↔ traffic_source.
Cardinalité 1:N
Une dimension, plusieurs faits. La norme saine. Éviter le N:N.
Clé unique côté dimension
Sinon, doublons et chiffres gonflés. À vérifier avant de relier.
Casse des libellés
« Search » ≠ « search ». Noms identiques partout, sinon la relation casse.
Suite du parcours
L'étoile simple tient debout. Le module 7 la complexifie avec le réel : croiser des sources de granularités différentes (marketing au mois, budget à l'année), une table calendrier, et les KPI qui pilotent — CAC, ROAS, écart au budget.

Ouvrir le module 7 — Modélisation complexe