Скользящее среднее 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)