Support formation Rapports Power BI

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.

Finalité des relations

  • Propage des filtres appliqués à la colonne d’une table de modèle à une autre table de modèle.
  • Propagation se poursuit tant qu’il y a un chemin de relation à suivre et peut viser plusieurs tables.
  • Les chemins de relation sont déterministes, ce qui signifie que les filtres sont toujours propagés de la même façon et sans variation aléatoire.
  • Peuvent être désactivées ou le contexte de filtre peut être modifié par les calculs de modèle qui utilisent des fonctions DAX particulières.
  • Si plusieurs filtres sont appliqués à une table : toujours d’une opération AND (exige que toutes les conditions soient remplies).

Appliquer les principes de conception des schémas en étoile

  • Produire un modèle comprenant des tables de dimension et de faits
  • Appliquer des règles qui filtrent les tables de dimensions, ce qui permet aux relations de modèle de propager efficacement ces filtres aux tables de faits.

Tables déconnectées

Cardinalités

  • Un-à-plusieurs (1:*) ou Plusieurs à un (*:1)
  • Un-à-un (1:1)
  • Plusieurs à plusieurs (*:*)

Privilégier les deux premières.

image.png
  1. Une relation est matérialisée par un trait entre 2 tables.
  2. 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).
  3. Il n’y a pas de relation (même cachée) entre ces 2 tables
  4. Le côté “1” de la relation indique (suppose) que le champ (ici ProductID) est sans doublons
  5. 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.

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.

Création automatique

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.

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]))