Power BI 日期比较

Power BI Date Comparision

我正在构建一个报告来控制一些 material 的库存。我有一个包含大量运动数据(330 万行)的列表...每个运动都有自己的中心(运动发生的地方)、material 代码、日期(运动发生的时间)、类型移动(入口、消费、转移...)、数量、价值等。我需要检查每个 material 和中心,最后一次消费移动发生的时间,与日历中的最大日期进行比较 table,计算间隔天数,分组(0-30天、31-90天、91-180天等...)。

有没有办法只使用度量来做到这一点?我使用 tables 完成,但我有一个静态结果。我需要以动态方式执行此操作(过滤我的日历 table 将调整结果)...

我的事实table具有下图所示的结构。

对于每个 [Cen.],[Material],通过 [TMv] = 201 或 261 过滤,return 公式 Today() - Max([Dt.lçto])

如果有人能提供帮助,我将不胜感激。

非常感谢!!!

经过多次尝试和失败后,我想出了一个解决这个问题的方法,使用下面的代码。根据应用的过滤器,下面的代码用于计算上次移动日期。

Último Mov (data) = 

CALCULATE(
    MAXX(
        ADDCOLUMNS(
            SUMMARIZE(
                fSAP_MB51;
                fSAP_MB51[Material]
            );
            "Último Movimento";
                VAR MAXDATE = 
                    MAXX(
                        FILTER(
                            'fSAP_MB51';
                            'fSAP_MB51'[TMv] IN {"201";"221";"241";"261";"281";"543"} &&
                            'fSAP_MB51'[Material] = EARLIER('fSAP_MB51'[Material])
                            );
                            'fSAP_MB51'[Dt.lçto.]
                    )
                VAR MINDATE = 
                    MINX(
                        FILTER(
                            'fSAP_MB51';
                            'fSAP_MB51'[TMv] IN {"101";"102";"861";"862"} && //
                            'fSAP_MB51'[Material] = EARLIER('fSAP_MB51'[Material])
                        );
                        'fSAP_MB51'[Dt.lçto.]
                    )

                RETURN
                CALCULATE(
                    MAX('dCalendar'[Date]) - 
                    SWITCH(
                        TRUE();
                        AND(ISBLANK(MAXDATE);ISBLANK(MINDATE)) ; DATE(2018;03;31);
                        ISBLANK(MAXDATE) ; MINDATE;
                        ISBLANK(MINDATE) ; MAXDATE;
                        MAXDATE
                    )
                );
            "Qtde Estoque";[Qtde Acumulada ALL]
        );
        TODAY() - [Último Movimento]
    );
    FILTER(
        ALLSELECTED('dCalendar'[Date]);
        ISONORAFTER('dCalendar'[Date]; MAX('dCalendar'[Date]); DESC)
    );
    dCalendar[FutureDate] = "Passado"
)