Accueil – Le CFO masqué › Forums › Power BI › Relation complexe et calcul
- Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par Sophie Marchand, le il y a 5 années et 5 mois.
-
AuteurMessages
-
19 juin 2019 à 10 h 49 min #55797jp.priveParticipant
Bonjour,
j’essai d’optimiser mes rapports suites à mes plus récentes formations sur PowerBi.
J’ai un tableau de relation ci-joint assez complexe et qui ressemble plus à une constellation qu’une étoile, mais ma source de donnée et l’étendu des rapports que je veux faire semble le nécessiter (si je souhaites garder ça en 1 fichier).Donc, j’ai ma formule de ventesBrutes (qui vient de la table Spending) que je mets dans une matrice avec une hiérarchie de Customer / Project_type / Employé.
Le résultat ne me surprend par au niveau des employés, tout les employés ce voit donner la même valeur, car la relation entre les tables n’est pas active.Dans mon ancienne version du document, j’appliquais le filtre USERELATIONSHIP(project[project_user_id];DimUser[user_id]);
à l’intérieur des fonctions CALCULATE de tout ce qui touchait les Ventes pour forcer la relation, mais je me demandais si il existait autre chose de plus efficace.Attachments:
You must be logged in to view attached files.19 juin 2019 à 12 h 28 min #55799Sophie MarchandParticipantBonjour,
Je ne suis pas en mesure de voir sur quels champs les relations inactives se font à partir de votre image. Toutefois, la fonction USERRELATIONSHIP est la fonction officielle qui permet de lire à travers une fonction inactive.
Cependant, il y a aussi la fonction TREATAS (qui est apparue plus tard) et qui permet de créer une relation “virtuelle” entre deux tables sans créer de relation physique.
Maintenant, est-ce que ce sera plus efficace? N’ayant pas accès à vos données, c’est une question difficile à répondre. Je vous dirais de faire des tests et de comparer les deux avec le DAX Studio en termes de performance.
Au plaisir,
Sophie
26 juin 2019 à 15 h 27 min #55935jp.priveParticipantJ’ai réussi à obtenir le résultat voulu.
Pour y arriver, j’ai dupliqué ma table DimUser et renommer les deux.
La première devient DimEmployé et sert pour mes calculs de coûts du temps par employé pour chaque projet. La relation se fait seulement avec la table work.Ma deuxième qui utilise une Query de type référence pour recopier la première se nomme DimResponsable et sert à filtrer lesdits projets par Gestionnaire. La relation se fait seulement avec la table projet
Je ne sais pas si c’est optimal, mais je me suis rendu compte qu’il n’est pas évidant de faire mes calculs de couts du temps par projet par Gestionnaire lorsque tout réfère à la même table d’employé
26 juin 2019 à 20 h 42 min #55939Sophie MarchandParticipantBonjour,
J’aimerais vous aider mais je ne suis pas en mesure ni de comprendre votre problématique, ni d’avoir une vue d’ensemble de votre modèle de données. Cela dit, si vous devez travailler avec une table de dimensions où des employés sont regroupés sous différents gestionnaires, vous voudrez peut-être explorer les hiérarchies parent/child, telles qu’expliquées dans cet article https://docs.microsoft.com/en-us/dax/understanding-functions-for-parent-child-hierarchies-in-dax.
Au plaisir,
Sophie
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.