Contact: 514-605-7112 / info@lecfomasque.com

Relation complexe et calcul

Ce sujet a 3 réponses, 2 participants et a été mis à jour par  Sophie Marchand, il y a 4 mois et 4 semaines.

4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #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.

    fichiers attachés:
    You must be logged in to view attached files.
    #55799

    Sophie Marchand
    Admin bbPress

    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 mois et 4 semaines par  jp.prive.
    #55939

    Sophie Marchand
    Admin bbPress

    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.