Скользящее среднее DAX на основе индекса 4 уровня

У меня проблемы с расчетом МА по ценам на товары. Данные представлены в следующем формате: в регионе есть муниципалитеты, продукты там продаются по определенным категориям по датам на еженедельной основе, и не все недели заполнены из-за сезонности.

Я нашел формулу ранжирования и скорректировал на основе этих 4 критериев. Вот DAX выражение для ранжирования (вычисляемый столбец):

index2 = 
RANKX (
    FILTER (
        _2017,
        EARLIER ( _2017[RegionName] ) = _2017[RegionName] && 
        EARLIER ( _2017[MunicipalityName] ) = _2017[MunicipalityName] &&
        EARLIER (_2017[ProductCategoryName] )= _2017[ProductCategoryName] && 
        EARLIER ( _2017[ProductName] ) = _2017[ProductName]
    ),
    _2017[StartDateTime],
    ,
    ASC
)

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

Вот некоторые меры, которые я попробовал:

cummulatives = 
VAR ind = MAX(_2017[index2])-3
VAR m1=
    CALCULATE(
        SUM(_2017[SellingPrice]),
            FILTER(
                ALL(_2017),
                _2017[index2]<=ind))
VAR m2=
    CALCULATE(
        COUNT(_2017[SellingPrice]),
            FILTER(
                ALL(_2017),
                _2017[index2]<=ind))
RETURN m2

Прикрепленное изображение таблицы. Любая помощь приветствуется. Спасибо!

Скриншот

1 ответ

Если вы хотите, чтобы накопленная сумма была сброшена с новым ProductNameто это должно быть частью вашего контекста фильтра. Вы удалили этот контекст, используя ALL() функция.

Вы можете либо вернуть его обратно в контекст фильтра, либо вообще не удалять его. Я бы предложил последнее, используя ALLEXCEPT(_2017, _2017[ProductName]) вместо ALL(_2017)

Другие вопросы по тегам