Les totaux d’une table Power Bi sont incohérents

  • Les totaux d’une table Power Bi sont incohérents

    Posté par Usager supprimé sur 2 septembre 2024 à 12h13

    Bonjour à Tous,

    Sur la base d’une mesure de performance délais mensuelle, j’ai effectué la mesure de pénalités financières par tranches (performance<90%, performance entre 90% et 92.5%, etc…).

    La table calcule correctement les montants pour chacune des lignes (mois) mais affiche des totaux de colonne incohérents. Il semblerait que Power Bi calcule les totaux des colonnes (tranches) en se basant sur la valeur de la performance totale et non en additionnant simplement les valeurs déjà calculées pour chaque mois.

    Je ne sais pas si mes explications sont claires, c’est pourquoi je joins un exemple ci-dessous:

    Sauriez-vous m’indiquer comment obtenir des totaux dont le résultat est la somme des montants calculés dans chaque colonne SVP?

    Exemple: Total à afficher pour la colonne “<90%”: 6209€ (2610€+3599€)

    Merci d’avance pour votre aide.

    Vincent

    ypicot a répondu Il y a 2 mois, 3 semaines 3 Membres · 4 Réponses
  • 4 Réponses
  • Tristan

    Membre
    2 septembre 2024 à 12h20

    Bonjour Nicolas,

    Dans Power BI, les totaux ne sont jamais la somme / min / max / moyenne des valeurs du dessus. Et heureusement ! Ce serait souvent faux mathématiquement (notamment pour des calculs non-additifs).

    Par défaut, le total se recalcule… à la maille totale. Si vous voulez changer ce comportement, je vous encourage à encapsuler votre mesure dans un SumX.

    Plus d’infos ici: https://www.sqlbi.com/articles/obtaining-accurate-totals-in-dax/

    et ici: https://www.sqlbi.com/articles/why-power-bi-totals-might-seem-inaccurate/

  • Usager supprimé

    Membre
    2 septembre 2024 à 15h20

    Bonjour Tristan,

    Merci pour votre réponse rapide. Je vais regarder les liens proposés.

    Ceci étant, j’ai déjà basé mon calcul DAX sur la formule SUMX. Mon calcul est le suivant:

    <div>
    <div>Bonus_Malus<90% = SUMX(</div>
    <div> ‘Base Vente’,</div>
    <div> IF(SUMX(‘Base Vente’,’Base Vente'[Délais OK])/COUNT(‘Base Vente'[Délais OK])<0.9,</div>
    <div> ‘Base Vente'[Pénalité 90%],</div>
    <div> 0))</div>
    <div>avec:</div>
    <div>”Base Vente” =>liste des délais (en nombre de jours) de chaque objet transporté depuis le début de l’année 2024.</div>
    <div>”Délais OK” => Délai conforme au contrat (renvoie 1 si OK et 0 si NOK).</div>
    <div>”Pénalité 90%” => Valeur potentielle de la pénalité pour chaque objet transporté.</div>
    <div> </div>
    <div>Bien à vous</div>
    </div>

  • Usager supprimé

    Membre
    2 septembre 2024 à 15h27

    Je m’aperçois que le formatage de mon message est illisible. Je le renvoie.

    Bonjour Tristan,

    Merci pour votre réponse rapide. Je vais regarder les liens proposés.

    Ceci étant, j’ai déjà basé mon calcul DAX sur la formule SUMX. Mon calcul est le suivant:

    Bonus_Malus<90% = SUMX(‘Base Vente’,

    IF(SUMX(‘Base Vente’,’Base Vente'[Délais OK])/COUNT(‘Base Vente'[Délais OK])<0.9, ‘Base Vente'[Pénalité 90%],0))

    avec:

    “Base Vente” =>liste des délais (en nombre de jours) de chaque objet transporté depuis le début de l’année 2024.

    “Délais OK” => Délai conforme au contrat (renvoie 1 si OK et 0 si NOK).

    “Pénalité 90%” => Valeur potentielle de la pénalité pour chaque objet transporté.

    Merci

    Bien à vous

  • ypicot

    Membre
    3 septembre 2024 à 10h39

    Bonjour

    C’est une histoire de contexte de calcul.

    Quand tu fais :

    SUMX(…, Base Vente'[Délais OK])/COUNT(‘Base Vente'[Délais OK])<0.9, …)

    Le numérateur s’appliquer bien à la ligne en cours, mais le COUNT s’applique à l’ensemble des lignes du contexte.

    (pour la suite, je suis bloqué : l’image de ton msg initial n’apparait plus dans mon navigateur, donc je ne sais plus ce que tu veux obtenir 🤔 )

    Yvan

    • Cette réponse a été modifiée Il y a 2 mois, 3 semaines par  ypicot.
    • Cette réponse a été modifiée Il y a 2 mois, 3 semaines par  ypicot.

Connectez-vous pour répondre.