DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板

时间:2023-03-08 16:36:57

DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板

难度: ★☆☆☆(2星)

适用范围: ★(3星)

概况:

当你有多个度量值都需要计算YTD,MoM,而又不想重复所有这些给每一个度量值分别设定计算度量值的话,有没有一个简便的方法,少点coding呢?

同时,用户通过选择,在同一个visual里面显示不同的度量值(组)。

此文涉及前文DAX/PowerBI系列 - 参数表(Parameter Table) - 多时间段数值对比的扩展部分,给出具体实例和解决方法。

应用场景:

以下是几个应用场景:


用户想在同一个chart显示不同的度量值(组)
避免重复定义一系列度量值

最终PowerBI效果显示如下:(耐心等待PowerBI 出来,噔噔噔噔~~~)

如图,1)左侧的YTD根据所选变化而变化;

2)右侧的标题是一个计算值,根据选择动态改变;同样右图中的所有值都根据所选不同而全部改变。

3)表格显示对应的值

DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板

欢迎转载,请保留原文链接和作者信息。O(∩_∩)O谢谢。
DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板(Period Table)
作者:马丁叔叔            
链接:http://www.cnblogs.com/lizardbi/p/DAX-PATTERN-POWERBI-Parameter-Table-Period-Table-Extension.html

数据模型:

DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板

要点:

这里涉及到一个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显示。