在我的 PBIX 文件中,我有计算收入、COGS、毛利率等的度量。
Revenue = Sum(Amt)
更多计算去年 Revenue_LY、COGS_LY 和 GM_LY 值(value)的指标。
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)
)
有没有办法总结所使用的措施。我不想为每个方差创建单独的度量。
最佳答案
是的。您可以创建动态度量。
首先创建收入
、COGS
、毛利率
等度量。
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())
接下来,您将使用[选定的测量]
作为基础创建所有复杂的时间智能测量:
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 %]
,替换对 [收入]
引用动态度量的度量。
现在,您可以在“我的测量”[My Measure]
列上使用切片器来动态更改 [Dynamic_CY-LY]
的每个实例以及其他动态实例度量,或者您可以在每个可视化效果上添加过滤器来过滤“我的度量”[我的度量]
。
您可能还希望为 [Selected Measure]
设置一个默认值,而不是默认为 BLANK()
;只需将其放在 SWITCH()
函数中的最后一个位置即可。
关于excel - 计算 Dax 中的方差和方差%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46539199/