Relation complexe et calcul

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 4 années et 10 mois.
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Articles
  • #55797
    jp.prive
    Participant

    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.
    #55799
    Sophie Marchand
    Participant

    Bonjour,

    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

    #55935
    jp.prive
    Participant

    J’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é

    • Cette réponse a été modifiée le il y a 4 années et 10 mois par jp.prive.
    #55939
    Sophie Marchand
    Participant

    Bonjour,

    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

4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.