Для многих пользователей Excel является отправной точкой в мире данных. И на первый взгляд, формулы DAX могут показаться очень похожими на формулы Excel. И это не случайно! Дизайнеры DAX намеренно сделали синтаксис похожим, чтобы облегчить переход для миллионов пользователей Excel. Однако, это сходство обманчиво, и под поверхностью скрываются фундаментальные различия.
Сходства (для комфортного старта):
● Синтаксис функций: Многие функции имеют схожие названия и параметры (например, SUM, AVERAGE, IF, MAX, MIN).
● Операторы: Арифметические операторы (+, -, *, /) и логические операторы (AND, OR) работают аналогично.
Ключевые отличия (где DAX раскрывает свою мощь):1. Работа с данными: Таблицы и отношения vs. Ячейки:
○ Excel: Формулы работают с диапазонами ячеек (A1:B10) или именованными диапазонами. Вы ссылаетесь на конкретные ячейки.
○ DAX: Формулы работают с таблицами и столбцами в модели данных. Вы ссылаетесь на [Sales Amount] из таблицы Sales, а не на C5. Это позволяет легко работать с данными из разных таблиц, связанных между собой. Например, в AdventureWorks вы можете связать таблицу Sales с таблицей Products и Customers, и DAX будет понимать эти связи.
2. Контекст вычисления: Строка и Фильтр vs. Фиксированный диапазон:
○ Excel: Контекст формулы обычно определяется ее положением в таблице (например, SUM(B2:B10) всегда суммирует этот диапазон).
○ DAX: Это самое фундаментальное и мощное отличие. DAX оперирует двумя основными типами контекста:
■ Контекст строки (Row Context): Применяется, когда формула вычисляется построчно (например, в вычисляемом столбце). Для каждой строки вычисляется значение, используя данные из этой конкретной строки.
■ Контекст фильтра (Filter Context): Это набор фильтров, применяемых к данным. Когда вы создаете меру, она вычисляется в контексте фильтра, который определяется срезами отчета, фильтрами на визуализациях, строками и столбцами сводной таблицы. Это означает, что одна и та же мера может давать разные результаты в зависимости от того, как вы взаимодействуете с отчетом.
○ Понимание контекста — это ключ к мастерству DAX. Это то, что позволяет одной мере динамически адаптироваться к любому срезу данных.
3. Типы вычислений: Вычисляемые Столбцы vs. Меры:
○ Excel: Все формулы, по сути, являются "вычисляемыми столбцами" или "вычисляемыми ячейками".
○ DAX:
■ Вычисляемые Столбцы (Calculated Columns): Вычисляются построчно и хранят результат в модели данных. Они потребляют память и вычисляются при обновлении данных. Идеальны для категоризации данных (например, Profit Margin = [Sales Amount] / [Total Product Cost]).
■ Меры (Measures): Вычисляются "на лету" во время запроса и не хранят значения в модели. Они не потребляют память для хранения значений, но требуют вычислительных ресурсов при каждом запросе. Идеальны для агрегаций (например, Total Sales = SUM(Sales[Sales Amount])). Меры — это то, что делает DAX таким динамичным.
4. Масштабируемость и Производительность:
○ Excel: Ограничен количеством строк и производительностью на больших объемах данных.
○ DAX: Оптимизирован для работы с миллионами и миллиардами строк благодаря движку VertiPaq (в основе Power BI и SSAS Tabular), который использует columnar storage и in-memory обработку.
Таким образом, DAX — это не просто "Excel на стероидах". Это язык, который позволяет вам мыслить в терминах моделей данных, отношений и динамических контекстов, открывая двери к аналитике, недоступной в традиционных электронных таблицах.