Power BI 矩阵 - 使用 DAX

时间:2020-12-30 11:21:05

标签: matrix powerbi dax dynamic-columns

我在下面的 Power BI Desktop 矩阵中有一个度量。 enter image description here

度量来自单个表,是包含数值的列的总和。

度量是:SUM(Table[Column])

列组 1:类别

列组 2:年份

列组 3:Qtr(即 Q)

我有一个场景,我们的客户想要获得 A 类的 2020 年第一季度B 类的 2020 年第一季度之间的方差(差异)。

enter image description here

新列是 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 月中减去(类似于季度比较)。

我认为我们可能需要使用一些变量来匹配年份,然后移至季度,然后移至月。

2 个答案:

答案 0 :(得分:0)

有一个名为 SAMEPERIODLASTYEAR 的函数可以处理时间智能,也许对你有用。

答案 1 :(得分:0)

如果您正好有两个不同的类别,您可以使用 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 )

这会保留年和季度/月的上下文,并且只更改类别上下文来进行计算。