Как добавить вычисляемый столбец в Power BI
Кратко
В статье показано, как добавить вычисляемый столбец или меру в Power BI с помощью DAX. Приведены готовые примеры формул, альтернативные подходы, чек-листы для ролей и рекомендации по валидации результатов.

Power BI отлично подходит для выполнения вычислений, но многие пользователи сталкиваются с проблемой добавления вычисляемого столбца. Ниже — понятная пошаговая инструкция и дополнительные рекомендации для аналитиков и разработчиков отчётов.
Введение
Коротко о терминах:
- DAX — язык формул в Power BI. Используйте его для расчётов в мерах и вычисляемых столбцах.
- Мера (measure) — агрегированное вычисление, зависящее от фильтров и контекста визуализации.
- Вычисляемый столбец — значение, рассчитанное для каждой строки таблицы при загрузке или обновлении данных.
Ниже — практический кейс: пользователь хочет добавить столбец с формулой ([q’ty per unit of 3rd month] – [q’ty per unit of 2nd month]) * [Price per Unit of 3rd month].

Шаги: как добавить вычисляемый столбец или меру
1. Создайте меру с помощью DAX
DAX (Data Analysis Expressions) — это язык формул. Меры часто гибче, чем вычисляемые столбцы, потому что подстраиваются под срезы и фильтры.
Пример меры, адаптированной под конкретные месяцы (вставьте в поле создания меры):
Result =
VAR qty_per_unit_of_3rd_month =
CALCULATE ( MAX ( Table[q’ty per unit] ), FILTER ( Table, Table[Month] = 3 ) )
VAR qty_per_unit_of_2rd_month =
CALCULATE ( MAX ( Table[q’ty per unit] ), FILTER ( Table, Table[Month] = 2 ) )
VAR Price_per_Unit_of_3rd_month =
CALCULATE ( MAX ( Table[Price per Unit] ), FILTER ( Table, Table[Month] = 3 ) )
RETURN
qty_per_unit_of_3rd_month – qty_per_unit_of_2rd_month * Price_per_Unit_of_3rd_monthСоветы:
- Подставьте имена таблиц и колонок, которые есть в вашей модели.
- Проверяйте результат сначала в простом визуале, например, в таблице.
Важно: формула выше ориентирована на специфические номера месяцев (2 и 3). Если в отчёте используются слайсеры, лучше сделать меру, учитывающую выбранный диапазон.
2. Мера, реагирующая на слайсер (динамическая)
Если вы хотите сравнивать первый и последний выбранные месяцы в слайсере, используйте меру, которая опирается на ALLSELECTED:
Result =
VAR qty_per_unit_of_first_month_in_slicer =
CALCULATE ( MIN ( Table[q’ty per unit] ), ALLSELECTED ( Table ) )
VAR qty_per_unit_of_last_month_in_slicer =
CALCULATE ( MAX ( Table[q’ty per unit] ), ALLSELECTED ( Table ) )
VAR Price_per_Unit_of_last_month =
CALCULATE (
MAX ( Table[Price per Unit] ),
FILTER ( Table, Table[Month] = qty_per_unit_of_last_month_in_slicer )
)
RETURN
qty_per_unit_of_last_month_in_slicer – qty_per_unit_of_first_month_in_slicer * Price_per_Unit_of_last_monthПояснение: эта мера автоматически подтягивает минимальное и максимальное значения по выбранным месяцам и выполняет расчёт для сравнения.
Альтернативные подходы
- Вычисляемый столбец: полезен, если расчёт нужен на уровне строки и не зависит от выбора на отчёте. Но он увеличивает размер модели.
- Power Query (M): делайте подготовку данных и предвычисления при загрузке. Подходит для сложных строковых преобразований и объединений.
- Используйте временные таблицы (GENERATESERIES/ADDCOLUMNS) для скользящих окон и сравнений между периодами.
Когда расчёт может не сработать
- В модели отсутствуют нужные индексы или дата-ключи.
- Колонки содержат текст вместо чисел (нужна явная конвертация).
- Неправильный контекст фильтрации: мера возвращает одно значение для всего визуала.
- Дублирующиеся периоды без ключа строки приводят к неопределённости в MAX/MIN.
Мини-методология: как проверять расчёт
- Создайте вспомогательный визуал с полями Month, q’ty per unit, Price per Unit.
- Примените меру и сравните числа вручную на нескольких строках.
- Проверьте крайние значения (NULL, 0, отрицательные).
- Включите временный фильтр на конкретный месяц и сравните результат с ожиданием.
Чек-лист по ролям
- Аналитик:
- Проверил имена колонок.
- Убедился, что данные типов numeric.
- Сверил значения на 3–5 строках вручную.
- Разработчик отчёта:
- Добавил меру в модель.
- Настроил формат вывода (валюта/десятичные).
- Обработал пустые значения через IF or COALESCE.
- Руководитель/тестировщик:
- Принял отчёт по критериям приёмки.
Критерии приёмки
- Мера возвращает ожидаемые значения для выбранных месяцев.
- Формула устойчива к пустым значениям и ошибкам типов.
- Производительность в пределах допустимого (отклик визуала за секунды при тестовых данных).
Краткая шпаргалка (cheat sheet)
- ALLSELECTED(Table) — глубина фильтрации по слайсерам.
- CALCULATE(expression, filters) — изменяет контекст вычисления.
- VAR … RETURN — читаемая запись промежуточных результатов.
- COALESCE(x, 0) — заменяет NULL на 0.
Пример диаграммы принятия решения
flowchart TD
A[Нужен расчёт] --> B{Зависит ли расчёт от слайсеров?}
B -- Да --> C[Создать меру 'measure' в DAX]
B -- Нет --> D{Нужно ли хранить результат на уровне строки?}
D -- Да --> E[Создать вычисляемый столбец]
D -- Нет --> F[Предобработать в Power Query]Глоссарий в одну строку
- Мера (measure) — агрегированное вычисление, зависящее от контекста визуализации.
Проверьте результат: после добавления меры или вычисляемого столбца протестируйте расчёт на реальных срезах данных. Если что-то не сходится, начните с проверки типов колонок и отсутствия дубликатов в ключах периодов.
Похожие материалы:
- Как добавить фильтры в Power BI — простые шаги
- 5 бесплатных облачных бухгалтерских программ
- Лучшее ПО для набора математических формул

Короткое резюме: меры гибкие и рекомендованы для расчётов, зависящих от слайсеров. Вычисляемые столбцы удобны для постоянных строковых значений, но увеличивают модель. Выберите подход в зависимости от цели, объёма данных и требуемой динамики отчёта.
Похожие материалы
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel
APC_INDEX_MISMATCH: как исправить BSOD в Windows
Как исправить ошибку Blink 1011