Задача и бизнес-смысл
Аналитик добавляет новую продажу: карточка выручки обязана пересчитаться, а категория документа уже зафиксирована в источнике.
Сегодняшний вопрос: «Разница между колонкой и мерой». Практический результат: Сосчитайте общую выручку по всем строкам фактов без ручного сложения. Прежде чем составлять выражение, письменно зафиксируйте измеряемую сущность, числитель, знаменатель (если он нужен) и фильтры. Именно эта спецификация, а не узнаваемое имя функции, определяет правильность будущей меры.
Как работает идея
Представьте три счета: 40, 60 и 80 ₽. Общая сумма меняется при добавлении четвёртого, но вычисленный на этапе импорта флаг счета не обязан пересчитываться от выбора сегмента.
Концепция модуля — чем отличается мера от колонки. Сначала отделите обработку каждой строки факта от агрегирования по контексту. Затем опишите, что должно происходить при новых покупателях, дополнительных строках и смене регионального фильтра. Перепутать контекст визуального фильтра с вычислением значения в отдельной строке.
- Назовите бизнес-сущность, которая считается: операция, документ, уникальный покупатель или денежная сумма.
- Укажите поля, которые определяют ответ; убедитесь, что числовые столбцы не содержат текстовые значения.
- Сформулируйте один тест на обычную строку, один — на границу и один — на изменение фильтра.
- Только затем выбирайте нужную группу функций DAX и проверяйте результат на искусственных данных.
Разбор синтаксиса на другой модели
Пример ниже относится к отдельной демонстрационной модели DemoOrders (и при необходимости DemoClients). Это учебный пример синтаксиса Power BI, а не формула для копирования в проверяемую лабораторию Tablicus.
SUM(DemoOrders[Amount])Изучите, какие имена обозначают таблицы, столбцы, функции и фильтры. Затем своими словами объясните порядок вычисления. Поскольку ваша лаборатория использует Sales и Customers, приведённый пример не является готовым ответом на её задачу. Для зачёта требуется самостоятельно составить выражение по имеющимся полям.
Профессиональное погружение: Базовая идея: что важно понять
Мера рассчитывается в момент обращения к ней с учётом текущего фильтра отчёта. Вычисляемая колонка, напротив, хранит значение на уровне строки модели и обычно пересчитывается при обработке данных. Это не вопрос красоты синтаксиса: если аналитик записал общую выручку одинаковым числом во все строки, фильтр по региону не превратит эту колонку в корректную региональную меру. Сначала определите, что должно изменяться при выборе периода и покупателя. Затем решите, является результат характеристикой одной продажи или агрегатом множества продаж.
Теоретическое углубление
DAX особенно чувствителен к различию row context и filter context. Итератор создаёт строковый контекст, но мера в визуализации обычно вычисляется в контексте фильтра. Это объясняет, почему одна и та же формула может показывать разные значения в карточке и в строках матрицы. Выражение нельзя оценить только по тексту: нужно знать, какой набор строк видим. При проверке обучения полезно вручную выписать видимые факты после выбора фильтра и лишь затем рассчитывать сумму. Учебный интерпретатор поддерживает часть языка, поэтому сложные модели необходимо дополнительно проверять в настоящем Power BI.
Самостоятельный разбор: Две природы расчёта
Ситуация из работы аналитика
В трёх строках фактов значения 40, 60 и 80. Отчёт меняет выбор региона.
Опишите, что должно пересчитываться динамически, а что является свойством строки.
Вопросы к разбору
- Какое определение показателя или фильтра пришлось бы уточнить у владельца данных для ситуации «Две природы расчёта»?
- Для занятия «Разница между колонкой и мерой» придумайте дополнительную контрольную запись, чтобы проверить требование, не используя боевые данные.
- На примере «Две природы расчёта» объясните заказчику без технических терминов, почему при проверке результат изменился или остался прежним.
Практикум: составьте меру самостоятельно
Требование задания: Сосчитайте общую выручку по всем строкам фактов без ручного сложения. Измерьте сумму выручки и проверьте, что новая строка продаж меняет результат, а строка справочника покупателей — нет.
Откройте набор Sales и Customers в редакторе. Сперва вручную оцените вклад двух разных строк, затем установите, какие поля должны участвовать в итоговом расчёте. Напишите формулу с нуля, не подставляя постоянное число и не копируя демонстрационный пример из другой модели.
- Составьте черновик формулы, опираясь на названия доступных полей и подсказку функции.
- Запустите выражение на видимых данных; зафиксируйте единицы измерения ответа.
- Представьте добавление покупки существующего клиента: должен ли меняться результат?
- Проверьте меру на скрытом наборе данных. Если ответ неверен, определите причину в зерне, фильтре или арифметике.
Контроль качества и диагностика ошибок
Перепутать контекст визуального фильтра с вычислением значения в отдельной строке.
Проверьте отдельно: дубли business ID, пустой набор после фильтра, нулевой знаменатель, несовпадение единиц измерения и изменение результата при обновлении выгрузки. Выделите только те сценарии, которые действительно применимы к сегодняшней функции: не нужно механически выполнять не относящиеся к задаче проверки.
- Фильтр меняется: предскажите направление и величину изменения.
- Количество строк растёт: отличите повторную покупку от нового покупателя.
- Ноль или пустое значение: заранее опишите ожидаемое поведение визуализации.
Рабочая интерпретация результата
Напишите мини-заметку к отчёту по теме «Разница между колонкой и мерой»: кто использует показатель, какая запись составляет его зерно, какое бизнес-правило применено и как проверить расчёт независимо от редактора DAX.
Задание не заканчивается зелёной проверкой. Убедитесь, что результат можно защитить перед руководителем: покажите контрольную сумму или количество, тип фильтра и два факта, которые изменили бы итог.
От бизнес-вопроса к модели данных
Урок «Разница между колонкой и мерой»: сейчас мы разбираем смысл показателя и требования к модели. Вычисляемая колонка сохраняет результат для строки при обновлении модели, мера пересчитывается для текущего фильтра отчёта. Из этого следует, что выражение, полезное в детализации по документам, может быть неправильным выбором для итоговой карточки.
В независимой модели Tickets есть три обращения с затратами 80, 120 и 200. Карточка затрат по всем обращениям показывает 400; при выборе одного подразделения на 80 и 120 результат должен стать 200.
Запишите до редактора три вещи: что означает одна строка, какая часть данных считается и какой результат станет неожиданным при добавлении новой записи.
СправочникНезависимый контрольный расчёт+
Ручной пример специально использует другую модель, чтобы не раскрывать ответ проверяемой лаборатории.
В независимой модели Tickets есть три обращения с затратами 80, 120 и 200. Карточка затрат по всем обращениям показывает 400; при выборе одного подразделения на 80 и 120 результат должен стать 200.
Добавьте четвёртое обращение на 40 только во второе подразделение: итог по всем обращениям становится 440, а карточка первого подразделения должна остаться 200.
- Выпишите значение до изменения данных.
- Измените ровно одно наблюдение и пересчитайте итог.
- Назовите фильтр, который может менять результат, и тот, который не должен его менять.
Самопроверка модели и результата
Для задания «Разница между колонкой и мерой» не копируйте готовое выражение. Сначала опишите нужную меру на языке бизнеса и попробуйте выполнить её в редакторе DAX.
Проверьте, не используется ли посчитанная один раз константа вместо меры, и зафиксируйте роль пользовательского фильтра.
- Проверьте направление связи и кардинальность ключей, если используется справочник.
- Сравните итог по всем строкам с итогом после фильтра — какой должен измениться?
- Подготовьте отрицательный тест: данные, при которых неверная мера даст правдоподобный ответ.
- После успешной проверки сформулируйте одно предложение для руководителя без названий функций DAX.
Практика на сайте
Проверьте свои навыки в настоящем тренажёре
Это одно обычное учебное задание. Его результат проверяется на сервере, но не сохраняет прогресс и не открывает платные материалы.
Лаборатория 1. Revenue
Сосчитайте общую выручку по всем строкам фактов без ручного сложения.
Бизнес-задача
- Сосчитайте общую выручку по всем строкам фактов без ручного сложения.
- Измерьте сумму выручки и проверьте, что новая строка продаж меняет результат, а строка справочника покупателей — нет.
Данные для расчёта
Откройте таблицы, найдите нужные поля и проверьте связи модели.
Sales5 записей
| SaleIDTEXT | CustomerIDTEXT | RegionTEXT | RevenueNUMBER | QtyNUMBER | PriceNUMBER |
|---|---|---|---|---|---|
| S01 | C01 | North | 120 | 2 | 60 |
| S02 | C02 | South | 90 | 3 | 30 |
| S03 | C01 | North | 80 | 4 | 20 |
| S04 | C03 | West | 50 | 1 | 50 |
| S05 | C04 | South | 160 | 2 | 80 |
Customers4 записей
| CustomerIDTEXT | TierTEXT | NameTEXT |
|---|---|---|
| C01 | Gold | Astra |
| C02 | Silver | Beta |
| C03 | Silver | Gamma |
| C04 | Gold | Delta |
Связи модели: Sales[CustomerID] → Customers[CustomerID]
Пробный результат не сохраняется в личном кабинете.