2017-10-03 2 views
2

Dans mon fichier PBIX, j'ont pris des mesures qui calculent Revenu, COGS, marge brute etc.Calcul de la variance et la variance% à Dax

Revenue = Sum(Amt) 

Plus mesures calculer la valeur pour l'année dernière Revenue_LY, COGS_LY et GM_LY. Maintenant, j'ai besoin de mesures de variance et de variance% pour chacune qui compare les données par rapport à l'année dernière et au budget. Le nombre de mesures devient juste trop élevé.

Revenue_CY-LY = CALCULATE([Revenue],KEEPFILTERS(Versions[VersionCode] = "Act")) - CALCULATE([Revenue_LY],KEEPFILTERS(Versions[VersionCode] = "Act")) 

Revenue_CY-LY% = IF([Revenue_CY-LY] < 0, -1, 1) * 
       IF(
        ABS(DIVIDE([Revenue_CY-LY],[Revenue])) > 99.9, 
         "n/a", 
        ABS(DIVIDE([Revenue_CY-LY],[Revenue])*100) 
      ) 

Existe-t-il un moyen de résumer les mesures utilisées. Je ne veux pas créer des mesures individuelles de chaque variance.

Répondre

0

Oui. Vous pouvez créer une mesure dynamique.

D'abord créer Revenue, COGS, Gross Margin, etc.

Revenue = SUM([Amt]) 
COGS = SUM([Cost]) 
Gross Margin = [Revenue] - [COGS] 
... 

Ensuite, vous créez une table avec une ligne pour chacun de vos mesures:

My Measures = DATATABLE("My Measure", STRING, {{"Revenue"}, {"COGS"}, {"Gross Margin"}}) 

Les noms ne ont pas besoin d'aligner avec vos mesures réelles, mais ils seront affichés afin de les rendre présentable .

Ensuite, vous créez une mesure sur cette table qui sera dynamiquement la même que la ligne sélectionnée dans la table:

Selected Measure = SWITCH(SELECTEDVALUE('My Measures'[My Measure], BLANK()), "Revenue", [Revenue], "COGS", [COGS], "Gross Margin", [Gross Margin], BLANK()) 

Ensuite, vous allez créer toutes les mesures de renseignement de temps complexes à l'aide de l'[Selected Measure] comme base:

Dynamic_LY = CALCULATE (
    [Selected Measure], 
    FILTER (
     ALL ('Date'), 
      'Date'[FinYear]= MAX ('Date'[FinYear]) - 1 && 'Date'[FinPeriod] = max('Date'[FinPeriod]) 
    ) 
) 

et vous pouvez faire [Dynamic_CY-LY] et [Dynamic_CY-LY %] d'une manière similaire à ceux de votre question, en remplaçant les références à la mesure [Revenue] avec des références à la d mesures ynamiques.

Maintenant, vous pouvez utiliser une trancheuse sur la colonne 'My Measures'[My Measure] pour modifier dynamiquement chaque instance de [Dynamic_CY-LY] et les autres mesures dynamiques, ou vous pouvez ajouter un filtre sur chaque visualisation pour filtrer 'My Measures'[My Measure].

Il se peut que vous souhaitiez également avoir une valeur par défaut pour [Selected Measure] au lieu de BLANK() par défaut; il suffit de mettre cela en dernière position dans la fonction SWITCH().