DAX
November 8, 2023
Опасайтесь одинаковых строк в таблице фактов модели
Это нужно знать с пеленок. Почему? Разберем небольшую таблицу с дублями для примера
Итак в модели есть мера. Бессмысленно выглядит, для упрощения:)
Сумма показатель:=SUMX('Таблица';calculate(sum('Таблица'[показатель])))
На каждую строку фактов идет расчет суммы показателя. Но calculate преобразовывает контексты строки таблицы в контекст фильтра. То есть на каждую строку таблицы фактов calculate дает задание: найди сумму столбца Показатель, где Атрибут и Показатель равен значению текущей строки.
расчет вернет сумму -2 от обеих строк дублей. Так как обе строки попали в фильтр:
Атрибут = Атрибут 4 Показатель = -1
И наша странная мера вернет 42. Хотя должна 44.
Сегодня я столкнулась с похожей мерой, которая давала расхождения из-за дублей. Впервые за 10 лет свой практики. Хорошо, когда знаешь про контексты строки и фильтра.