当前年初至今vs上个月年初至今Power BI度量

时间:2020-10-16 06:44:59

标签: powerbi dax

目标:

  • 1-在表格中显示每月的变化与上一个年初至今的比较 仅在选定的年份中填写表格
  • 2-显示记分卡中的更改

数据:

ind YEAR    MON Figures
1   2020    JAN 12321
2   2020    FEB 344
3   2020    MAR 5000
4   2020    APR 325
5   2020    MAY 747
1   2019    JAN 54091
2   2019    FEB 349
3   2019    MAR 789
4   2019    APR 901
5   2019    MAY 2356

期望结果:

  • “年初至今”列正在一年内累积数字
  • 更改列显示 与年初至今相比的变化

用法-默认过滤器为最新年份= 2020,用户可以选择特定的一年以查看记分卡中的更改

ind YEAR    MON Figures YTD     Change
1   2020    JAN 12321   12321   0
2   2020    FEB 344     12665   344
3   2020    MAR 5000    17665   5000
4   2020    APR 325     17990   325
5   2020    MAY 747     18737   747
1   2019    JAN 54091   54091   0
2   2019    FEB 349     54440   349
3   2019    MAR 789     55229   789
4   2019    APR 901     56130   901
5   2019    MAY 2356    58486   2356

我该如何实现?

2 个答案:

答案 0 :(得分:1)

您与日历有关系吗?还是在您的表中是MonthNo的列? 如果是,那么是计算YTD的最简单方法:

YTD = CALCULATE (
        SUM ( 'Table'[Figures] ),
        FILTER (
            ALL ( 'Calendar'[Year], 'Calendar'[MonthNo] ),
            'Calendar'[Year] = SELECTEDVALUE ( 'Calendar'[Year] )
                && 'Calendar'[MonthNo] <= SELECTEDVALUE ( 'Calendar'[MonthNo] )
        )
    )

在这里,我们将本月(从表上下文中)到1个月到X个月(当前为行)的[Figures]列相加。

YTD_LY = CALCULATE (
        SUM ( 'Table'[Figures] ),
        FILTER (
            ALL ( 'Calendar'[Year], 'Calendar'[MonthNo] ),
            'Calendar'[Year] = SELECTEDVALUE ( 'Calendar'[Year] ) -1 //add -1 here
                && 'Calendar'[MonthNo] <= SELECTEDVALUE ( 'Calendar'[MonthNo] )
        )
    )

答案 1 :(得分:1)

如果不需要汇总结果,并且假设Ind列按月排序,并且每年重新启动(如示例数据中所示),则可以考虑创建两个计算列。在这里,我假设表的名称为“ Tab”

YTD累计当前列年份的数字值,直到当前月份为止

YTD =
VAR CurrentYear = Tab[YEAR]
VAR CurrentIndex = Tab[ind]
RETURN
    SUMX(
        FILTER(
            Tab,
            Tab[Year] = CurrentYear
                && Tab[Ind] <= CurrentIndex
        ),
        Tab[Figures]
    )

然后更改,在行级别上为Just Figures,除非i月份的月份为0

Change = 
IF( Tab[Ind] = 1, 0, Tab[Figures] )

然后,您可以在具有YEAR和MON列的表中使用这些列,以获取正确的粒度级别。

如果您只需要当前选定年份的最后一个值(例如在卡中使用),则可以实施一项措施以获取最后一次更改

Last Change =
VAR LastYear =
    MAX( Tab[YEAR] )
VAR LastIndex =
    CALCULATE(
        MAX( Tab[Ind] ),
        Tab[YEAR] = LastYear
    )
RETURN
    CALCULATE(
        VALUES( Tab[Change] ),
        Tab[Year] = LastYear,
        Tab[ind] = LastIndex
    )