Если вычисляемые столбцы — это статические чертежи, то меры — это живые, дышащие, динамические расчеты, которые адаптируются к каждому вашему клику в отчете. Это истинная магия DAX, которая позволяет одной и той же формуле давать бесконечное множество осмысленных результатов.
Что это такое?
Мера (Measure) — это формула DAX, которая выполняет агрегацию (суммирование, усреднение, подсчет) или другое вычисление над данными. В отличие от вычисляемых столбцов, значения мер не хранятся в модели данных.
Они вычисляются "на лету" каждый раз, когда вы их используете в отчете или визуализации.
Как это работает? (Контекст Фильтра)
Меры вычисляются в контексте фильтра (Filter Context). Это означает, что когда вы перетаскиваете меру в сводную таблицу, график или срез, DAX автоматически применяет все фильтры, которые активны в данный момент.
● Если вы смотрите на общие продажи, мера покажет сумму по всем данным.
● Если вы фильтруете по "Bikes", мера покажет сумму продаж только для велосипедов.
● Если вы помещаете меру в строку сводной таблицы с "регионами" и в столбец с "годами", мера покажет продажи для каждого региона в каждом году.
Мера "знает", в каком "срезе" данных она находится, и адаптирует свое вычисление.
Это и есть сердце динамического анализа в DAX.
Когда использовать Меры?
Меры — это ваш основной инструмент для:
1. Любых агрегаций: Суммы, средние, количества, минимумы, максимумы.
○ Пример: Total Sales = SUM(FactInternetSales[SalesAmount]).
○ Пример: Average Order Quantity = AVERAGE(FactInternetSales[OrderQuantity]).
2. Динамических расчетов: Вычислений, которые должны адаптироваться к фильтрам пользователя.
○ Пример: Продажи за предыдущий год.
○ Пример: Процент роста продаж.
○ Пример: Скользящие средние.
3. Ключевых показателей эффективности (KPI): Меры являются основой для всех бизнес-показателей, которые вы отслеживаете.
Примеры с AdventureWorks:
Создаем динамические показатели!
Давайте создадим несколько мер, чтобы почувствовать их мощь.
Пример 4: Общие Продажи
Это самая базовая и, возможно, самая часто используемая мера.
Total Sales = SUM(FactInternetSales[SalesAmount])
● Что происходит: Функция SUM() суммирует значения в столбце SalesAmount из таблицы FactInternetSales.
● Применение: Поместите эту меру в карточку Power BI, и вы увидите общую сумму продаж. Добавьте Product Category в таблицу, и мера Total Sales автоматически покажет продажи по каждой категории.
Это волшебство контекста фильтра!
Пример 5: Среднее Количество Заказанных Продуктов
Мы хотим узнать, сколько в среднем продуктов заказывают клиенты.
Average Order Quantity = AVERAGE(FactInternetSales[OrderQuantity])
● Что происходит: Функция AVERAGE() вычисляет среднее значение столбца OrderQuantity.
● Применение: Эта мера динамически покажет среднее количество продуктов в заказе для любого выбранного вами среза (по продукту, по клиенту, по дате).
Пример 6: Количество Уникальных Клиентов
Мы хотим подсчитать, сколько уникальных клиентов совершили покупки.
Unique Customers = DISTINCTCOUNT(FactInternetSales[CustomerKey])
● Что происходит: Функция DISTINCTCOUNT() подсчитывает количество уникальных значений в столбце CustomerKey.
● Применение: Эта мера покажет количество уникальных клиентов, которые соответствуют текущим фильтрам.
Агрегационные Функции:
Ваши первые шаги в DAX
Большинство мер начинаются с агрегационной функции.
Вот самые распространенные:
● SUM(Column): Суммирует все числа в столбце.
● AVERAGE(Column): Вычисляет среднее значение чисел в столбце.
● COUNT(Column): Подсчитывает количество непустых значений в столбце.
● COUNTROWS(Table): Подсчитывает количество строк в таблице.
● MAX(Column): Находит максимальное значение в столбце.
● MIN(Column): Находит минимальное значение в столбце.
● DISTINCTCOUNT(Column): Подсчитывает количество уникальных значений в столбце.