计算Dax中的方差和方差%

在我的PBIX文件中,我有计算收入,销货成本,毛利率等的措施

Revenue = Sum(Amt) 

更多计算去年收入_YY,COGS_LY和GM_LY的价值的措施。

 Revenue_LY = CALCULATE ( [Revenue], FILTER ( ALL ( 'Date' ), 'Date'[FinYear]= MAX ( 'Date'[FinYear] ) - 1 && 'Date'[FinPeriod] = max('Date'[FinPeriod]) ) ) 

现在我需要比较每个数据与去年和预算的差异和方差百分比。 措施的数量太多了。

 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) ) 

有没有一种方法来总结使用的措施。 我不想为每个方差创build单独的度量。

是。 您可以创build一个dynamic度量。

首先创buildRevenueCOGSGross Margin等措施。

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

然后你为每一个度量创build一行表格:

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

这些名字不需要与你的实际措施相一致,但是它们会被显示出来,使它们更具有说服力。

然后,您在该表上创build一个度量,该度量将dynamic地与表中选定的行相同:

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

接下来,使用[Selected Measure]作为基础,创build所有复杂的时间智能度量:

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

然后你可以用与你的问题类似的方式来做[Dynamic_CY-LY][Dynamic_CY-LY %] ,用引用的dynamic度量来代替对[Revenue]度量的引用。

现在,您可以在'My Measures'[My Measure]列上使用切片器来dynamic更改[Dynamic_CY-LY]dynamic[Dynamic_CY-LY]所有实例以及其他dynamic度量,或者可以在每个可视化中添加滤镜以过滤'My Measures'[My Measure]

这可能是你还想为[Selected Measure]默认值,而不是默认为BLANK() 。 把它放在SWITCH()函数的最后一个位置。