Support formation Rapports Power BI
Pages
Modèle de données

icon picker
Relations

Finalité des relations

Une relation de modèle propage les filtres appliqués sur la colonne d’une table de modèle à une autre table de modèle.

Cardinalités

Un-à-plusieurs (1:*) ou Plusieurs à un (*:1)
Un-à-un (1:1)
Plusieurs à plusieurs (*:*)
Privilégier la première.
image.png
Une relation est matérialisée par un trait entre 2 tables.
Les champs OrderID sont utilisés pour créer la relation (placer sa souris sur le trait sans cliquer pour voir les champs impliqués dans la relation).
Il n’y a pas de relation (même cachée) entre ces 2 tables
Le côté “1” de la relation indique (suppose) que le champ (ici ProductID) est sans doublons
Le côté “plusieurs” indique qu’il peut y avoir des doublons dans le champ (ici ProductID). Les valeurs de ce champ doivent correspondre avec celles du côté “1” de la relation.


Les relations sont créées automatiquement lors du premier chargement de chaque table. Pour forcer la détection automatique : Accueil > Gérer les relations > Détection automatique
Pour que Power BI ne détecte pas la relation : Fichier > Options et paramètres > Options > Fichier actif > Chargement des données > Décocher Détecter automatiquement les nouvelles relations une fois les données chargées.

Supprimer une relation

Sélectionner une relation puis touche SUPPR.
On passe alors de :
(Champ CustomerID de la table Order et Quantity de la table Order_details)
image.png
à :
image.png
Quand les valeurs d’un champ est identique et égal au total, c’est qu’il manque une relation entre les 2 tables.

Créer une relation

Faite glisser un champ d’une table sur le champ d’une autre table.
Les champs peuvent ne pas avoir le même nom mais avoir le même type : numérique, date ou texte.

Modifier une relation

Double-clic sur une relation, ce qui affiche.
image.png
On doit modifier une relation quand on a créé une relation avec les mauvais champs. Par exemple, on crée une relation entre le champ OrderID de la table Orders et le champ ProductID de la table Order_Details :
image.png
Ces champs n’ayant aucune valeur commune, on obtient :
image.png
Le champ CustomerID de la table Orders ne peut afficher aucune valeur car les champs OrderID et ProductID n’ont pas de valeur commune.

Direction du filtre

On crée 2 mesures :
Qte order details = SUM(Order_Details[Quantity])
Nb orders = COUNTROWS(Orders)
Quand on affiche la mesure par CustomerID, on obtient le résultat souhaité :
image.png
Le champs CustomerID de la table Orders filtre Quantity de la table Order_details utilisé dans la mesure.
Quand on affiche la mesure par ProductName de la table Product et la mesure Nb orders, on obtient :
image.png
Donc comme si il n’y avait pas de relation entre les tables. Ce qui est le cas en effet :
image.png
Le nombre de Orders ne peut pas être filtré par ProductName car il n’y a pas de relation directe entre les 2 tables. Pour contourner le problème, on aura recours aux filtres dans à double sens.
Pour chacune des relations entre les 3 tables : double-clic puis sélectionner A double sens dans Direction du filtre croisé.
On obtient alors les bons chiffres :
image.png
Car les filtres se propagent en “remontant” :
image.png

Afficher les éléments sans données

Un élément est présent dans une table de dimension (par exemple un secteur), mais aucune ligne de la table de fait ne référence cet élément (aucune vente sur ce secteur). On souhaite quand même afficher ce secteur dans un visuel.
Dans le volet Build, clic droit sur le champ > Afficher les éléments sans données.
Dans la mesure qui calcule la somme, modifier =SUM(Ventes[Montant]) en :
=IF(ISBLANK(SUM(Ventes[Montant])),0,SUM(Ventes[Montant]))

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.