计算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度量。
首先创buildRevenue
, COGS
, Gross 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()
函数的最后一个位置。