DAX в Power BI: как превратить данные в бизнес-инсайты и формулы

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Для кого эта статья:

  • Новички в области аналитики и работы с Power BI
  • Специалисты, стремящиеся улучшить свои навыки в DAX и бизнес-аналитике
  • Люди, заинтересованные в карьерном росте в области BI-аналитики и анализа данных

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

Хотите быстро освоить DAX и стать востребованным BI-аналитиком? На курсе Обучение BI-аналитике от Skypro вы получите не только теоретическую базу, но и отработаете все основные функции DAX на реальных бизнес-кейсах под руководством практикующих экспертов. Программа включает 75+ часов практики в Power BI с разбором типичных ошибок и созданием готового портфолио проектов!

Что такое DAX: основа работы с данными в Power BI

DAX (Data Analysis Expressions) — это специализированный язык формул, разработанный Microsoft для анализа данных в Power BI, Excel Power Pivot и Analysis Services. По сути, это ваш инструмент для создания пользовательских вычислений и преобразования разрозненных данных в осмысленную аналитику.

Если SQL отвечает на вопрос "что находится в базе данных?", то DAX отвечает на вопрос "что означают эти данные для бизнеса?". Ключевая особенность DAX — это работа с табличной моделью данных, а не с отдельными ячейками, как в Excel.

Антон Крылов, BI-аналитик в ритейл-компании

Помню свой первый серьезный проект в Power BI — отчет по продажам с разбивкой по регионам, каналам и сезонам. Начальник ожидал увидеть не просто цифры, а динамику, процентные соотношения и прогнозы. Без DAX я был как без рук.

Начал с простейших мер типа SUM(Sales[Amount]), но быстро уперся в ограничения. Настоящий прорыв случился, когда освоил CALCULATE и фильтры контекста. Это позволило создать показатель "Доля продаж по каналам относительно общего объема" одной формулой:

Channel Share = 
DIVIDE(
SUM(Sales[Amount]), 
CALCULATE(
SUM(Sales[Amount]), 
ALL(Channels)
)
)

Эта мера мгновенно показывала процентные доли каналов при любых срезах данных — по времени, региону или категории. Руководство было в восторге от интерактивности, а я понял: DAX — это суперсила аналитика.

Вот почему DAX является фундаментальным навыком для работы с Power BI:

  • Создание вычисляемых столбцов — добавление новых данных на основе существующих значений
  • Разработка мер (measures) — динамические вычисления, меняющиеся в зависимости от выбранных фильтров
  • Создание вычисляемых таблиц — генерация новых наборов данных
  • Временной интеллект — сравнение периодов, скользящие средние, накопительные итоги

DAX работает в контексте — это ключевая концепция, определяющая, какие данные учитываются при вычислениях. Существует два типа контекста:

Тип контекста Описание Применение
Контекст строки Работает на уровне отдельной строки таблицы Вычисляемые столбцы
Контекст фильтра Определяет, какие строки включены в вычисление Меры (measures)

Понимание контекстов — ключ к правильному использованию DAX. Именно они позволяют создавать динамичные отчеты, реагирующие на действия пользователя. 🔍

Пошаговый план для смены профессии

Синтаксис и структура формул DAX для новичков

Формулы DAX на первый взгляд напоминают формулы Excel, но имеют ряд существенных отличий. Базовая структура формулы DAX выглядит так:

Название = Выражение

Например: Общая выручка = SUM(Sales[Amount])

Разберем ключевые элементы синтаксиса DAX:

  • Ссылки на таблицы и столбцы: Sales[Amount], где Sales — название таблицы, а [Amount] — название столбца
  • Функции: SUM(), AVERAGE(), COUNT() и другие
  • Переменные: создаются с помощью ключевого слова VAR
  • Операторы: арифметические (+, -, *, /), сравнения (=, <>, >, <), логические (&&, ||)

Важное отличие DAX от Excel — использование таблиц и столбцов вместо диапазонов ячеек. Вместо SUM(A1:A10) в DAX мы пишем SUM(Sales[Amount]).

Пример простой формулы DAX для вычисления средней цены продажи:

Средняя цена = DIVIDE(SUM(Sales[Revenue]), SUM(Sales[Quantity]), 0)

Для более сложных вычислений используются переменные с помощью конструкции VAR ... RETURN:

Процент премиальных продаж = 
VAR TotalSales = SUM(Sales[Amount])
VAR PremiumSales = CALCULATE(SUM(Sales[Amount]), Products[Category]="Premium")
RETURN
DIVIDE(PremiumSales, TotalSales, 0)

Обратите внимание на ключевые особенности синтаксиса DAX:

  1. Формулы не чувствительны к регистру (sum = SUM)
  2. Пробелы игнорируются (можно форматировать код для удобства чтения)
  3. Строковые значения заключаются в двойные кавычки ("текст")
  4. Даты указываются в формате ГГГГ-ММ-ДД и заключаются в кавычки ("2023-10-15")

Основные операторы DAX в решении аналитических задач

Операторы DAX — базовые строительные блоки для создания формул. Понимание их работы существенно упрощает написание даже сложных выражений. 💪

Категория Операторы Пример использования Результат
Арифметические +, -, *, /, ^ Прибыль = Sales[Revenue] – Sales[Cost] Вычисление прибыли
Сравнения =, <>, >, <, >=, <= Высокие продажи = IF(Sales[Amount] > 1000, "Да", "Нет") "Да" для продаж больше 1000
Логические &&, , IN Целевые клиенты = Sales[Age] > 30 && Sales[Income] > 50000 TRUE для клиентов старше 30 с доходом выше 50000
Текстовые & ФИО = Customer[LastName] & ", " & Customer[FirstName] "Иванов, Иван"

Мария Соколова, BI-аналитик в FMCG

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

Вместо создания множества отдельных мер для каждого сегмента, я применила логические операторы в одной умной мере:

Эффективность акции = 
CALCULATE(
SUM(Sales[Revenue]),
Sales[IsPromotion] = TRUE,
Sales[StoreType] IN {"A", "B"} || (Sales[StoreType] = "C" && Sales[Region] = "Центр")
)

Эта формула моментально фильтровала только акционные продажи в магазинах типа A и B, а также в магазинах типа C, но только в центральном регионе.

Маркетологи были поражены скоростью обновления данных при изменении фильтров. А для меня это стало примером того, как комбинация операторов && (И), || (ИЛИ) и IN значительно сокращает код и делает аналитику более гибкой.

Особое внимание стоит уделить условным операторам, которые используются для создания динамических вычислений:

  • IF(условие, значениееслиистина, значениееслиложь) — базовое условное выражение
  • SWITCH(выражение, значение1, результат1, значение2, результат2, ..., [иначе]) — многовариантное условие

Пример использования SWITCH для категоризации продаж:

Категория продаж = 
SWITCH(
TRUE(),
Sales[Amount] > 10000, "Крупная сделка",
Sales[Amount] > 5000, "Средняя сделка",
Sales[Amount] > 1000, "Малая сделка",
"Микротранзакция"
)

Важно помнить, что DAX использует "ленивое вычисление" логических операторов — если первая часть выражения с && даёт FALSE, вторая часть не проверяется (аналогично для || и TRUE).

Ключевые функции DAX для бизнес-анализа в Power BI

Функции DAX — это мощный инструментарий для решения разнообразных аналитических задач. Ниже представлены наиболее востребованные категории функций DAX с примерами их применения. 📊

1. Агрегационные функции

Используются для выполнения математических операций над наборами данных:

  • SUM() — суммирование значений: Общая выручка = SUM(Sales[Amount])
  • AVERAGE() — среднее значение: Средний чек = AVERAGE(Sales[Amount])
  • MIN(), MAX() — минимальное и максимальное значения: Максимальная сделка = MAX(Sales[Amount])
  • COUNT(), COUNTA(), COUNTROWS() — подсчет значений: Количество транзакций = COUNTROWS(Sales)

2. Фильтрующие функции

Позволяют модифицировать контекст фильтра для расчетов:

  • CALCULATE() — изменяет контекст фильтра для выражения: Продажи премиум = CALCULATE(SUM(Sales[Amount]), Products[Category]="Premium")
  • FILTER() — применяет пользовательский фильтр: Крупные сделки = CALCULATE(SUM(Sales[Amount]), FILTER(Sales, Sales[Amount] > 10000))
  • ALL() — удаляет все фильтры из таблицы или столбца: Доля рынка = DIVIDE(SUM(Sales[Amount]), CALCULATE(SUM(Sales[Amount]), ALL(Products)))
  • ALLEXCEPT() — удаляет все фильтры, кроме указанных столбцов

3. Функции работы со временем

Мощный набор инструментов для анализа временных рядов:

  • DATEADD() — сдвиг периода: Продажи предыдущий год = CALCULATE(SUM(Sales[Amount]), DATEADD(Calendar[Date], -1, YEAR))
  • SAMEPERIODLASTYEAR() — тот же период прошлого года
  • PARALLELPERIOD() — параллельный период
  • DATESYTD(), DATESMTD(), DATESQTD() — даты с начала года/месяца/квартала: Продажи YTD = CALCULATE(SUM(Sales[Amount]), DATESYTD(Calendar[Date]))

4. Текстовые функции

Обработка и манипуляция строковыми значениями:

  • CONCATENATE(), & — объединение строк
  • UPPER(), LOWER() — изменение регистра
  • LEFT(), RIGHT(), MID() — извлечение подстрок
  • SEARCH(), FIND() — поиск подстроки

5. Статистические функции

  • STDEV.S(), STDEV.P() — стандартное отклонение выборки/популяции
  • VAR.S(), VAR.P() — дисперсия выборки/популяции
  • MEDIAN() — медианное значение
  • PERCENTILE.EXC(), PERCENTILE.INC() — процентили

Комбинируя эти функции, можно создавать сложные аналитические выражения для решения специфических бизнес-задач. Например, формула для расчета среднего чека с исключением выбросов:

Средний чек (очищенный) = 
VAR AvgOrder = AVERAGE(Sales[Amount])
VAR StdDev = STDEV.P(Sales[Amount])
RETURN
CALCULATE(
AVERAGE(Sales[Amount]),
FILTER(
Sales,
Sales[Amount] >= AvgOrder – 2 * StdDev &&
Sales[Amount] <= AvgOrder + 2 * StdDev
)
)

Практическое применение DAX для оптимизации отчётов

Теперь, когда вы знакомы с основными функциями и операторами DAX, рассмотрим практические сценарии их применения для создания эффективных и информативных отчетов в Power BI. 🛠️

1. Создание ключевых показателей эффективности (KPI)

KPI — основа любого бизнес-дашборда. DAX позволяет создавать динамические показатели, реагирующие на фильтры:

Прирост продаж = 
VAR CurrentSales = SUM(Sales[Amount])
VAR PrevSales = CALCULATE(
SUM(Sales[Amount]),
DATEADD(Calendar[Date], -1, YEAR)
)
RETURN
DIVIDE(CurrentSales – PrevSales, PrevSales, 0)

2. Накопительные итоги и скользящие средние

Для анализа трендов часто требуются накопительные итоги и скользящие средние:

Накопительный итог = 
CALCULATE(
SUM(Sales[Amount]),
FILTER(
ALL(Calendar),
Calendar[Date] <= MAX(Calendar[Date]) &&
Calendar[Year] = MAX(Calendar[Year])
)
)

Скользящая средняя (7 дней) = 
AVERAGEX(
DATESINPERIOD(
Calendar[Date],
MAX(Calendar[Date]),
-7,
DAY
),
SUM(Sales[Amount])
)

3. Сегментация и классификация данных

DAX помогает группировать данные для более наглядного представления:

ABC-классификация = 
VAR CurrentProduct = MAX(Products[ProductID])
VAR TotalRevenue = CALCULATE(SUM(Sales[Revenue]), ALL(Products))
VAR ProductRevenue = SUM(Sales[Revenue])
VAR ProductShare = DIVIDE(ProductRevenue, TotalRevenue)
RETURN
SWITCH(
TRUE(),
ProductShare >= 0.8, "A",
ProductShare >= 0.5, "B",
"C"
)

4. Расчет бизнес-метрик

DAX позволяет создавать сложные бизнес-метрики, важные для принятия решений:

  • Коэффициент конверсии: Конверсия = DIVIDE(COUNTROWS(Sales), COUNTROWS(Visitors))
  • Средний срок службы клиента: CLV = AVERAGEX(Customers, DATEDIFF(Customers[FirstPurchase], Customers[LastPurchase], DAY))
  • Маржинальность: Маржа = DIVIDE(SUM(Sales[Revenue]) – SUM(Sales[Cost]), SUM(Sales[Revenue]))

5. Оптимизация производительности формул

Эффективные формулы DAX не только точны, но и быстры. Вот несколько приемов оптимизации:

  • Используйте переменные (VAR) для хранения промежуточных результатов
  • Избегайте вложенных вызовов CALCULATE, если возможно
  • Используйте CALCULATETABLE вместо FILTER для больших наборов данных
  • Применяйте SUMMARIZE для предварительной агрегации данных

Пример оптимизации с использованием переменных:

// Неоптимальная формула
Маржа (%) = 
DIVIDE(
SUM(Sales[Revenue]) – SUM(Sales[Cost]),
SUM(Sales[Revenue])
) * 100

// Оптимизированная формула
Маржа (%) = 
VAR Revenue = SUM(Sales[Revenue])
VAR Cost = SUM(Sales[Cost])
RETURN
DIVIDE(Revenue – Cost, Revenue, 0) * 100

Для максимальной эффективности отчетов также рекомендуется:

  • Создавать отдельные меры вместо встроенных формул в визуализациях
  • Использовать иерархии для улучшения навигации по данным
  • Применять форматирование чисел в самих мерах с помощью функции FORMAT()
  • Добавлять проверки на ошибки и деление на ноль

Понимание основных функций и операторов DAX открывает практически безграничные возможности для анализа данных в Power BI. Начните с простых формул и постепенно переходите к более сложным конструкциям. Регулярная практика и эксперименты с различными комбинациями функций — лучший способ освоить этот мощный инструмент. Помните: каждая формула DAX — это не просто код, а бизнес-логика, переведенная на язык данных, и ваша задача — сделать эту логику максимально понятной и эффективной для принятия решений.

Читайте также

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Что такое DAX?
1 / 5

Загрузка...