Power BI Сравнение дат - PullRequest
0 голосов
/ 17 марта 2020

Я создаю отчет, чтобы контролировать запас некоторых материалов. У меня есть большой список с большим количеством данных о движении (3,3 миллиона строк) ... у каждого движения есть свой центр (где произошло движение), код материала, дата (когда произошло движение), тип движения (вход, потребление, перенос ...), кол-во, стоимость и т. д. c. Мне нужно проверить, для каждого материала и центра, когда произошло последнее движение потребления, сравнить с максимальной датой из календарной таблицы, рассчитать, сколько дней между ними, и классифицировать по группам (0-30 дней, 31-90 дней, 91-180 дней и др. c ...).

Есть ли способ сделать это, используя только меры? Я выполнил sh, используя таблицы, но у меня есть результат c. Мне нужно сделать это динамически c (фильтрация моей таблицы Календаря откорректирует результат) ...

Моя таблица фактов имеет структуру в соответствии с рисунком ниже.

Fact table sample

Для каждого [Cen.], [Материал], отфильтрованного по [TMv] = 201 или 261, вернуть формулу Today() - Max([Dt.lçto])

Я бы ценю, если кто-то может помочь.

Спасибо большое !!!

1 Ответ

0 голосов
/ 08 мая 2020

После долгих попыток и неудач я нашел способ решить этот вопрос, используя следующий код. Код ниже использовался для расчета даты последнего движения в соответствии с примененными фильтрами.

Ú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"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...