IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Power BI Discussion :

DAX - AVERAGEX - CA moyen journalier différent si passe SUMX au lieu d'une mesure - Poruquoi ?


Sujet :

Power BI

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut DAX - AVERAGEX - CA moyen journalier différent si passe SUMX au lieu d'une mesure - Poruquoi ?
    Bonjour à tous,


    J'ai 2 tables

    dimCalendar
    factSales[

    Lien entre les 2 tables
    dimCalendar[Transaction_Date] (1) --> (*) factSales[OrderDate]

    Nom : modele.png
Affichages : 188
Taille : 65,8 Ko

    J'ai calculé les mesures suivantes

    le CA en fonction du contexte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Revenue =SUMX('fSales', 'fSales'[quantity_sold] * 'fSales'[unit_price])
    Puis le Chiffre d'affaire moyen journalier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Daily Average Revenue1 =averagex(VALUES(dCalendar[transaction_date]),[Revenue]) -> OK



    J'ai ensuite remplacé dans Chiffre d'affaire moyen journalier [Revenue] par son expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Daily Average Revenue2 =averagex(VALUES(dCalendar[transaction_date]),SUMX('fSales', 'fSales'[quantity_sold] * 'fSales'[unit_price]))

    Et là c'est le drame car les données sont différente entre Daily Average Revenue1 & Daily Average Revenue2. Une explication ?


    Nom : Daily Average Revenue.png
Affichages : 180
Taille : 101,9 Ko



    Les fichiers joints sont réduits à 2019 alors que les données sont sur 2017 à 2019 mais trop volumineux à charger
    factSales.txt
    dimCalendar.txt

  2. #2
    Membre chevronné Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 290
    Par défaut
    Hello,

    Oui c'est normal, car la fonction AVERAGEX() est un itérateur qui génère un contexte de ligne et pas un contexte de filtre.

    Afin que cela donne le bon résultat il fait réaliser une transition de contexte pour transformer ton contexte de ligne en contexte de Filtre grace à CALCULATE()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Daily Average Revenue2 =
    AVERAGEX(
          VALUES(dCalendar[transaction_date]),
          CALCULATE  (
                SUMX('fSales', 'fSales'[quantity_sold] * 'fSales'[unit_price])
          )
    )
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  3. #3
    Membre émérite Avatar de Tippa
    Homme Profil pro
    Consultant Formateur en Business Intelligence
    Inscrit en
    Mars 2010
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Formateur en Business Intelligence
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 339
    Par défaut A savoir
    Bonjour à tous,

    Pour répondre sur la partie pour quoi quand tu utilises ta mesure [Revenue] cela fonctionne et
    pourquoi avec l'expression SUMX('fSales', 'fSales'[quantity_sold] * 'fSales'[unit_price]) cela ne fonctionne pas.

    Lorsque tu crée une mesure explicite :
    Revenue = SUMX('fSales', 'fSales'[quantity_sold] * 'fSales'[unit_price]) )
    tu écris en réalité un CALCULATE caché, donc :
    Revenue =CALCULATE( SUMX('fSales', 'fSales'[quantity_sold] * 'fSales'[unit_price]) )
    Ce calculate est invisible mais bien réel, et la preuve en est...
    Lorsque tu ajoutes le CALCULATE devant l'expression (cf recommandation de Nicolas Mendez), cela fonctionne aussi.

    Selon moi c'est l'une des nombreuses raisons de passer le plus souvent possible par des mesures explicites
    et de préférer imbriquer des mesures, plutôt que des expressions.

    J'espère avoir été clair

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/08/2019, 15h32
  2. Réponses: 5
    Dernier message: 03/07/2007, 14h43
  3. Réponses: 1
    Dernier message: 22/02/2007, 14h36
  4. Réponses: 15
    Dernier message: 15/05/2006, 09h26
  5. Réponses: 10
    Dernier message: 15/05/2006, 07h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo