在我的PBIX文件中,我有计算收入,COGS,毛利率等的措施。
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)
)
有没有办法总结所使用的措施。我不想为每个方差创建单独的度量。
答案 0 :(得分:1)
是。您可以创建动态度量。
首先制作Revenue
,COGS
,Gross Margin
等措施。
Revenue = SUM([Amt])
COGS = SUM([Cost])
Gross Margin = [Revenue] - [COGS]
...
然后为每个度量创建一个包含一行的表:
My Measures = DATATABLE("My Measure", STRING, {{"Revenue"}, {"COGS"}, {"Gross Margin"}})
这些名称不需要与您的实际测量值保持一致,但它们会被显示出来以使它们呈现出来。
然后在该表上创建一个度量,该度量将与表中的选定行动态相同:
Selected Measure = SWITCH(SELECTEDVALUE('My Measures'[My Measure], BLANK()), "Revenue", [Revenue], "COGS", [COGS], "Gross Margin", [Gross Margin], BLANK())
接下来,您将使用[Selected Measure]
作为基础创建所有复杂的时间智能度量:
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 %]
,并使用对动态度量的引用替换对[Revenue]
度量的引用。
现在,您可以使用'My Measures'[My Measure]
列上的切片器动态更改[Dynamic_CY-LY]
的每个实例以及其他动态度量,也可以在每个可视化上添加过滤器以过滤{{1} }。
您可能还想拥有'My Measures'[My Measure]
的默认值,而不是默认为[Selected Measure]
;把它放在BLANK()
函数的最后位置。