DAX пугает новичков зря. Если вы хоть раз писали в Excel =СУММ(...) или =ЕСЛИ(...), вы уже владеете половиной идей DAX. Разница не в синтаксисе — он почти такой же. Разница в одном сдвиге мышления, и этот урок целиком про него.
Разберём медленно, чтобы зашло независимо от вашей подготовки.
Что переносится напрямую
Хорошие новости сначала.
Формула начинается со знака равно. Выручка = SUM(...) — та же логика, что =СУММ(...) в ячейке.
Функции называются почти так же. SUM, AVERAGE, COUNT, MIN, MAX, IF — в Excel это СУММ, СРЗНАЧ, СЧЁТ, МИН, МАКС, ЕСЛИ. Те же кирпичи, английские имена.
Сама идея. «Взять данные и что-то посчитать» — одинаковая. Вы не учитесь считать заново. Вы учитесь считать в другом устройстве данных.
Разница №1: в DAX нет ячеек
Вот первый и главный сдвиг.
В Excel формула живёт в ячейке и ссылается на другие ячейки: =СУММ(C2:C3001). Вы указываете координаты: «сложи вот этот прямоугольник». Сдвинулись данные — поехали ссылки.
В DAX ячеек нет вообще. Вы оперируете столбцами таблиц целиком:
Выручка = SUM ( Продажи[Сумма] )
Это читается не «сложи ячейки с C2 по C3001», а «просуммируй весь столбец Сумма в таблице Продажи». Не координаты — имя столбца. Добавились строки, переехал файл — формула не ломается, потому что она про столбец, а не про прямоугольник ячеек.
Перестаньте думать координатами («A2:A100»). Думайте именами столбцов («столбец Сумма таблицы Продажи»). Это первое, что отличает DAX от Excel.
Разница №2: что именно суммируется — решаете не вы заранее
Второй сдвиг — и он важнее первого.
В Excel диапазон C2:C3001 зафиксирован. Вы заранее решили, что суммируете именно эти строки.
В DAX SUM(Продажи[Сумма]) не привязан к строкам заранее. Какие строки попадут в сумму — решает контекст отчёта в момент показа: что выбрано в срезе, какая строка таблицы, по какому региону смотрим. Одна и та же формула в разных местах даёт разные числа.
Положите меру Выручка в таблицу по округам — и она посчитается отдельно для каждого:
| Округ | Выручка |
|---|---|
| ЦФО | 2 523 688 |
| ПФО | 1 953 284 |
| СЗФО | 1 440 676 |
| … | … |
Вы не писали отдельную формулу под ЦФО и отдельную под ПФО. Формула одна. Просто в строке «ЦФО» в неё попали только продажи ЦФО — так распорядился контекст.
Чтобы получить выручку по ЦФО в Excel, вы бы поставили фильтр и сделали СУММ, или написали СУММЕСЛИ(Регион; "ЦФО"; Сумма) — то есть зашили условие в формулу. В DAX условие не зашивают: мера одна, а «по ЦФО» приходит снаружи, из отчёта. Менять условие в формуле умеет функция CALCULATE — до неё дойдём.
Разница №3: столбец или мера
Excel-привычка — «протянуть формулу вниз по всем строкам». В Power BI это вычисляемый столбец: значение в каждой строке, считается один раз, лежит в памяти.
Но для итогов — выручки, среднего чека, процента — это не нужно и вредно. Итоги — это меры: считаются на лету под текущий контекст и почти не едят память. Подробно меры разберём в уроке про первую меру; здесь важно увидеть корень привычки: «протянуть вниз» — это Excel-рефлекс, и в DAX он нужен редко.
Перетащить в DAX всю Excel-логику «через столбцы»: насоздавать вычисляемых столбцов на каждый расчёт. Модель распухает и тормозит. Правило: агрегат (сумма, среднее, доля) — это мера, а не столбец.
Соберём в одну мысль
DAX — это Excel, у которого забрали ячейки и добавили контекст. Функции те же, знак равно тот же. Но вместо «сложи прямоугольник ячеек» вы говорите «просуммируй столбец», а сколько строк туда попадёт — решит отчёт.
Звучит непривычно ровно до первого живого примера. И у вас уже есть инструмент, на котором эта интуиция щёлкает мгновенно, — обычная сводная таблица. Её и разберём в следующем уроке.