DAX
November 8, 2023

Опасайтесь одинаковых строк в таблице фактов модели

Это нужно знать с пеленок. Почему? Разберем небольшую таблицу с дублями для примера

Таблица фактов с дублями строк

Итак в модели есть мера. Бессмысленно выглядит, для упрощения:)

Сумма показатель:=SUMX('Таблица';calculate(sum('Таблица'[показатель])))

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

Для строк

расчет вернет сумму -2 от обеих строк дублей. Так как обе строки попали в фильтр:

Атрибут = Атрибут 4
Показатель = -1
столбец Сумма при расчете через calculate

И наша странная мера вернет 42. Хотя должна 44.

Сегодня я столкнулась с похожей мерой, которая давала расхождения из-за дублей. Впервые за 10 лет свой практики. Хорошо, когда знаешь про контексты строки и фильтра.