Страницы: 1
RSS
DAX итоги в сводной таблице по "разорванному" периоду
 
Здравствуйте.

Имеется сводная таблица, в которой отображаются продажи за выбранный период времени.
Необходимо так же отображать продажи за аналогичный период прошлого года.
При использовании в мере функции PARALLELPERIOD, результаты при непрерывном диапазоне дат, по месяцам и в строке итогов отображаются правильно, но если нужно посмотреть разорванный период (например январь, февраль, апрель), то в строке итогов сумма отображается с учётом марта.
Понимаю, что это особенность PARALLELPERIODа, но не знаю как эту особенность обойти.
Подскажите пожалуйста.
 
Цитата
RatFink написал:
Понимаю, что это особенность PARALLELPERIODа, но не знаю как эту особенность обойти.
Не нужно эту особенность обходить. Календарь должен быть со всеми датами без разрывов.
 
Цитата
RatFink написал:
но если нужно посмотреть разорванный период (например январь, февраль, апрель), то в строке итогов сумма отображается с учётом марта

для этого используйте календарь2 с неактивной связью, а мера будет по типу

Код
=calculate(sum();all('календарь');userelationship('таблица фактов'[дата];'календарь2'[дата])
 
В общем в Power BI все отлично считается. Это косяк PP в Excel.

Код
Продажи PY =
IF (
    [ShowValueForDates],
    CALCULATE (
        [Продажи, шт.],
        CALCULATETABLE (
            DATEADD ( 'calendar'[Дата], -1, YEAR ),
            'calendar'[dateBeforeLastFactDate] = TRUE ()
        )
    )
)

В PP:
Вычисляемый столбец в календаре
Код
LY_Date = EDATE ( 'calendar'[Дата]; -12 )

Мера:
Код
Продажи PY_2:=
IF (
    [ShowValueForDates];
    CALCULATE (
        [Продажи, шт.];
        USERELATIONSHIP ( 'calendar'[LY_Date]; 'ИдПродажи'[Месяц] )
    )
)

Скрытая мера, чтобы значения там, где не нужно, не вылезали:
Код
ShowValueForDates:=
VAR LastDateWithData =
    CALCULATE (
        MAX ( 'ИдПродажи'[Месяц] );
        ALL ( 'calendar' );
        ALL ( 'ИдПродажи' )
    )
VAR FirstDateWithData =
    CALCULATE (
        MIN ( 'ИдПродажи'[Месяц] );
        ALL ( 'calendar' );
        ALL ( 'ИдПродажи' )
    )
VAR FirstDateVisible =
    MIN ( 'calendar'[Дата] )
VAR LastDateVisible =
    MAX ( 'calendar'[Дата] )
VAR Result = FirstDateVisible <= LastDateWithData
    && LastDateVisible >= FirstDateWithData
RETURN
    Result
Изменено: surkenny - 27.05.2022 23:35:41
 
surkenny, спа-си-бо!
В меру ограниченности знаний, пока не очень осознаю нужность скрытой меры (попробовал сделать меру "Продажи PY_2" без скрытой меры, вроде значения не вылезают там, где не нужно :) ), но надеюсь по мере освоения DAXа, я это пойму.
Страницы: 1
Наверх