问题描述
我在下面的 Power BI Desktop 矩阵中有一个度量。
度量来自单个表,是包含数值的列的总和。
度量是:SUM(Table[Column])
列组 1:类别
列组 2:年份
列组 3:Qtr(即 Q)
我有一个场景,我们的客户想要获得 A 类的 2020 年第一季度和B 类的 2020 年第一季度之间的方差(差异)。
新列是 Q1 Variance。
以类似的方式,我需要 A 类 2020 年第二季度和 B 类 2020 年第二季度之间的差异。
如何根据这种情况在矩阵中获得一个新列,其中我在年和季度中减去相应的列?
也可能在以后的情况下,A 类可以有一年 B 类可能没有。
例如,A 类可能有 2018 年和 2019 年,而 B 类可能有 2017 年和 2018 年。
在这种情况下,我只需要 2018 季度之间的差异,不需要对 2017 年和 2019 年进行任何计算。
使用 DAX 有什么想法吗?
类别选择通过切片器进行。
有时可能是从切片机中选择的类别 A 和类别 B,有时可能是类别 B 和类别 C。
切片器将始终一次选择恰好 2 个类别。
所以,我不能硬编码任何东西。一切都是动态的。
A 类可能有 2018 年和 2019 年, 而B类可能有2017年和2018年, 而C类可能有2019年、2020年、2021年等
此外,我可能也必须比较相应的月份。假设 A 的 2019 年 1 月将从 B 的 2019 年 1 月中减去(类似于季度比较)。
我认为我们可能需要使用一些变量来匹配年份,然后移至季度,然后移至月。
解决方法
有一个名为 SAMEPERIODLASTYEAR 的函数可以处理时间智能,也许对你有用。
,如果您正好有两个不同的类别,您可以使用 max 选择一个,使用 min 选择一个并计算两者之间的差异。
Variance =
VAR Cat1 = MAXX ( ALLSELECTED ( Table1 ),Table1[Category] )
VAR Cat2 = MINX ( ALLSELECTED ( Table1 ),Table1[Category] )
VAR Sum1 = CALCULATE ( SUM ( Table1[Column] ),Table1[Category] = Cat1 )
VAR Sum2 = CALCULATE ( SUM ( Table1[Column] ),Table1[Category] = Cat2 )
RETURN
IF ( ISBLANK ( Sum1 ) || ISBLANK ( Sum2 ),BLANK (),Sum1 - Sum2 )
这会保留年和季度/月的上下文,并且只更改类别上下文来进行计算。