Вычисляемые столбцы против мер
Разбираем главное различие в DAX — между вычисляемым столбцом и мерой.
Вычисляемый столбец считается для каждой строки при обновлении и хранится в таблице; мера считается на лету в момент показа, в текущем контексте фильтра.
Почему это важнее всего
Это различие — самая частая причина ошибок у новичков и любимый вопрос на собеседовании аналитика. Перепутав столбец и меру, вы получите либо неверные числа, либо раздутую медленную модель. Понять разницу — значит перейти от «случайно работает» к осознанному DAX.
Вычисляемый столбец
Столбец добавляется в таблицу и заполняется значением для каждой строки — один раз при обновлении данных. Он работает в контексте строки: в формуле доступны другие столбцы той же строки. Результат физически хранится в модели и занимает память.
-- Вычисляемый столбец в таблице Sales:
Итого по строке = Sales[quantity] * Sales[price]Тут для каждой продажи перемножаются её количество и цена. Это уместно: значение осмысленно на уровне строки и пригодится как атрибут (например, для фильтра «крупные заказы»).
Мера
Мера не хранит значений — это формула расчёта агрегата, которая выполняется в момент отображения, в контексте фильтра отчёта. Памяти почти не занимает, пересчитывается мгновенно под текущие срезы.
-- Мера:
Общая выручка = SUMX( Sales, Sales[quantity] * Sales[price] )Та же логика «количество × цена», но результат суммируется по всем видимым строкам и подстраивается под фильтры отчёта.
Сравнение в лоб
| Свойство | Вычисляемый столбец | Мера |
| Когда считается | при обновлении, построчно | при показе, в контексте |
| Контекст | строки | фильтра |
| Хранится в модели | да (занимает память) | нет |
| Реагирует на срезы | нет (значение фиксировано) | да |
| Для чего | атрибут строки, ключ, признак | показатели: суммы, доли, KPI |
Правило выбора
Спросите себя: «Мне нужно значение в каждой строке (чтобы фильтровать/группировать) или агрегат, реагирующий на отчёт?» Атрибут строки (категория цены, флаг «VIP», год из даты) — столбец. Любой показатель, который должен меняться от срезов (выручка, средний чек, доля) — мера. Практическое правило: по умолчанию делай меру; столбец — только когда значение реально нужно как атрибут строки.
Как работает под капотом
Вычисляемый столбец материализуется: его значения сжимаются и лежат в VertiPaq рядом с остальными столбцами, увеличивая размер модели. Мера хранится лишь как выражение; при каждом обновлении визуала движок берёт текущий контекст фильтра, формирует нужный набор строк и считает агрегат. Поэтому мер можно иметь сотни почти без затрат памяти, а каждый лишний вычисляемый столбец на миллионах строк — это мегабайты.
Частые ошибки
- Делать столбец там, где нужна мера. Тогда число не реагирует на срезы и зря тратит память.
- Делать меру вместо атрибута строки. Меру нельзя положить на ось или в срез как категорию.
- Считать «итог» столбцом и потом суммировать его. Часто это можно и нужно сделать одной мерой через
SUMX.
Итог
- Столбец считается построчно при обновлении и хранится; мера считается на лету в контексте фильтра.
- Столбец — для атрибутов строки (фильтры, группировки); мера — для показателей, реагирующих на отчёт.
- По умолчанию выбирайте меру; столбцы добавляйте экономно.