如何在 DAX Excel PowerPivot 或 Power BI 中使用 rolling/moving 条件进行测量

How to make a measurement with a rolling/moving conditional in DAX Excel PowerPivot or Power BI

我有这个table:

Period Firm Sector Net Income Assets
31 Dec 2018 AA 1 10 100
31 Dec 2018 BB 1 20 100
31 Dec 2018 CC 2 30 100
31 Dec 2018 DD 2 40 100
31 Dec 2019 AA 1 15 100
31 Dec 2019 BB 1 25 100
31 Dec 2019 CC 2 35 100
31 Dec 2019 DD 2 45 100
31 Dec 2020 AA 1 18 100
31 Dec 2020 BB 1 null 100
31 Dec 2020 CC 2 38 100
31 Dec 2020 DD 2 48 null

我想创建一个度量来计算资产的部门 Return,即 t 年的 SUM(Net Income)/SUM(Assets),以包括只有在 第 t 年和 第 t-1 年 拥有 一套完整的 净收入和资产的公司.

因此,我想像这样创建一个枢轴 table:

ROA Sector
Period 1 2
31 Dec 2018 null null
31 Dec 2019 20 % 40%
31 Dec 2020 18 % 38%

我如何在 DAX 中做到这一点?

一个可能的解决方案是准备一个 table 变量,其中包含上一年的设置,用作当前年份计算的过滤器。

ROA = 
VAR CurrentPeriod =
    SELECTEDVALUE ( T[Period] )
VAR PreviousPeriod =
    DATEADD (
        T[Period],
        -1,
        YEAR
    )
VAR Result =
    IF (
        NOT ISBLANK( CurrentPeriod ),
        VAR PreviousYearSet =
            CALCULATETABLE (
                SUMMARIZE (
                    T,
                    T[Sector],
                    T[Firm]
                ),
                NOT ISBLANK ( T[Assets] ),
                NOT ISBLANK ( T[Net Income] ),
                T[Period] = PreviousPeriod
            )
        RETURN
            CALCULATE (
                DIVIDE (
                    SUM ( T[Net Income] ),
                    SUM ( T[Assets] )
                ),
                NOT ISBLANK ( T[Assets] ),
                NOT ISBLANK ( T[Net Income] ),
                PreviousYearSet
            )
    )
RETURN
    Result

应用于示例数据的此度量可用于矩阵视觉对象以提供预期结果