DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板
难度: ★★☆☆☆(2星)
适用范围: ★★★☆☆(3星)
概况:
当你有多个度量值都需要计算YTD,MoM,而又不想重复所有这些给每一个度量值分别设定计算度量值的话,有没有一个简便的方法,少点coding呢?
同时,用户通过选择,在同一个visual里面显示不同的度量值(组)。
此文涉及前文DAX/PowerBI系列 - 参数表(Parameter Table) - 多时间段数值对比的扩展部分,给出具体实例和解决方法。
应用场景:
以下是几个应用场景:
用户想在同一个chart显示不同的度量值(组)
避免重复定义一系列度量值
最终PowerBI效果显示如下:(耐心等待PowerBI 出来,噔噔噔噔~~~)
如图,1)左侧的YTD根据所选变化而变化;
2)右侧的标题是一个计算值,根据选择动态改变;同样右图中的所有值都根据所选不同而全部改变。
3)表格显示对应的值
欢迎转载,请保留原文链接和作者信息。O(∩_∩)O谢谢。
DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板(Period Table)
作者:马丁叔叔
链接:http://www.cnblogs.com/lizardbi/p/DAX-PATTERN-POWERBI-Parameter-Table-Period-Table-Extension.html
数据模型:
要点:
这里涉及到一个trick -- switch 语句。 通过switch语句把所选的度量值设到一个generalized的中间变量,再用这个中间变量来计算YTD,MoM等等的值。
中间变量
_tempMeasure = IF (
HASONEVALUE ( 'Measure Selection'[Measure] ),
SWITCH (VALUES ( 'Measure Selection'[Measure] ),
"Cost", [#Cost]
,"Revenue", [#Revenue]
,"Profit", [#Profit]
,BLANK())
,[#Cost])
中间变量前值
_prevMeasureValue = CALCULATE([_tempMeasure]
, PARALLELPERIOD('Date'[Date], -, MONTH)
, FILTER(ALL('Date'),'Date'[Date]<= MAX('Fact'[Date]) )
)
YTD
YTD = CALCULATE([_tempMeasure]
, DATESYTD('Date'[Date],"12/31")
, FILTER(ALL('Date'),'Date'[Date]<= MAX('Fact'[Date]) ))
MoM(环比)
MoM % = DIVIDE([_tempMeasure] - [_prevMeasureValue], [_prevMeasureValue])
最终效果
参照 上文的PowerBI显示。