繁体   English   中英

如何在 DAX Excel PowerPivot 或 Power BI 中使用滚动/移动条件进行测量

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

我有这张桌子:

时期 公司 部门 净利 资产
2018 年 12 月 31 日 AA 1 10 100
2018 年 12 月 31 日 BB 1 20 100
2018 年 12 月 31 日 抄送 2 30 100
2018 年 12 月 31 日 DD 2 40 100
2019 年 12 月 31 日 AA 1 15 100
2019 年 12 月 31 日 BB 1 25 100
2019 年 12 月 31 日 抄送 2 35 100
2019 年 12 月 31 日 DD 2 45 100
2020 年 12 月 31 日 AA 1 18 100
2020 年 12 月 31 日 BB 1 null 100
2020 年 12 月 31 日 抄送 2 38 100
2020 年 12 月 31 日 DD 2 48 null

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

因此,我想创建一个 pivot 表,如下所示:

资产收益率 部门
时期 1 2
2018 年 12 月 31 日 null null
2019 年 12 月 31 日 20 % 40%
2020 年 12 月 31 日 18 % 38%

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

一种可能的解决方案是准备一个包含上一年集的表变量,用作当前年份计算的过滤器。

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

应用于样本数据的这种度量可以在矩阵视觉中使用,以给出预期的结果

结果矩阵

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM