DAX (язык запросов)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
DAX
Семантика формульный, функциональный, предметно-ориентированный
Класс языка язык запросов
Появился в 2010
Автор Jeffrey Wang[en] и команда разработки
Разработчик Microsoft
Выпуск Сентябрь 2018 (ежемесячные релизы) (2018)
Система типов Динамическая
Основные реализации: Microsoft Power BI Desktop, Microsoft Analysis Services, Microsoft Excel
Испытал влияние Microsoft Excel
Повлиял на Microsoft Power BI, Microsoft Analysis Services, Microsoft Excel
Лицензия n/a
Платформа x86-64, x86-32
ОС Microsoft Windows

DAX (англ. Data Analysis eXpressions — выражения для анализа данных) — формульный функциональный язык запросов, разрабатываемый и поддерживаемый компанией Microsoft, для построения выражений и извлечения данных, которые расположены в табулярной модели — модели представления данных, идеологически схожей с многомерной OLAP-моделью. Запрос или выражение на DAX напоминает синтаксис формул Excel, в котором осуществляется вызов тех или иных функций языка, но, в отличие от Excel, оперирует либо сразу целыми столбцами таблицы данных, либо частью этих столбцов. В отличие от Excel, адресное обращение к данным в какой-либо ячейке таблицы данных средствами DAX невозможно, что сближает язык с SQL или MDX.

Является одним из трёх ключевых элементов концепции построения BI-систем по версии Microsoft, наряду с ETL-средствами Power Query[en] и подсистемой визуализации Power View[en]. Использование DAX свободно от лицензионных отчислений.

Синтаксис[править | править код]

Поскольку создатели DAX вдохновлялись синтаксисом формул Excel[1], то и любой запрос на DAX может быть представлен как строка. Переводы каретки, пробелы, знаки табуляции между элементами запроса игнорируются, а многострочные запросы используются только для упрощения чтения программного кода.

Пример создания новой меры (аналог новой функции с точки зрения языков программирования), которая возвращает вчерашнюю дату:

Вчерашняя дата = TODAY () - 1

В реализации DAX в PowerPivot для Excel в качестве инфикса для присвоение вместо знака «=» в определениях мер используется «:=»; В остальном синтаксис остаётся неизменным. DAX-запрос для SSAS предваряет служебное слово EVALUATE. В других реализациях (например, PowerPivot для Excel, Power BI) служебное слово EVALUATE, а также ряд других служебных слов (DEFINE, MEASURE, GROUP BY, ORDER и тому подобные) не используются в пользовательском интерфейсе и применяются автоматически.

Функциональный состав[править | править код]

Результатом работы запроса или выражения может быть таблица или единичное, скалярное значение. Более чем две сотни встроенных функций языка подразделяются на следующие группы:

  • функции с табличным значением
    • функции фильтров
    • агрегатные функции
    • функции логики операций со временем
  • скалярные функции
    • функции даты и времени
    • статистические функции
    • логические функции
    • функции фильтров
    • математические и тригонометрические функции
    • текстовые функции
    • функции иерархии
    • функции логики операций со временем[2].

Локализация[править | править код]

Синтаксис языка имеет частичную локализацию: названия функций языка пишутся всегда на английском (ABS, AVERAGE, BLANK, NOW, TODAY, SUM и так далее), а десятичный разделитель и разделитель функций зависит от локали операционной системы, например, в англоязычной версии точка используется в качестве десятичного разделителя, а запятая в качестве разделителя функций (если функций в запросе больше одной), а в русской локализации для десятичного разделителя по умолчанию используется запятая, а для разделения функций внутри одного запроса или параметров функции используется точка с запятой («;»).

Испорченная кодировка в справке Power BI Desktop

Производительность[править | править код]

Особенностью языка является обеспечение высокой производительности запросов к данным и ориентированность на резидентные вычисления (англ. in-memory computing), за счёт чего достигается ускорение выполнения запросов и появляется возможность интерактивного взаимодействия с элементами построенных на этих данных BI-отчётов, построения информационных панелей[en] с функциями интерактивной подгрузки детализаций (drill-down), вопросно-ответных интерфейсов и ряда других подобных средств.

Вопросно-ответный интерфейс

История[править | править код]

При реализации технологии столбцового хранения данных в памяти, которое используется в «движках» xVelocity (vertiPaq), потребовался язык запросов, который бы обеспечивал манипуляцию с данными, хранящимися в столбцах табличных данных (как в измерениях MDX). С другой стороны, язык должен был бы быть синтаксически похож на язык формул Excel, который к 2008—2009 году был знаком подавляющему числу бизнес-пользователей, занимающихся анализом данных. Однако похожесть DAX на нелокализованный, базирующийся на английском языке, язык формул Excel является скорее маркетинговым ходом, чем реальной необходимостью в одностроковых запросах.

Поскольку запросы производились к данным в оперативной памяти и не требовались операции ввода-вывода, новый язык мог игнорировать ряд подходов к оптимизации запросов, используемых в MDX/SQL[3], за счёт чего достигалась компактность запросов, более высокая скорость разработки и, потенциально, более высокая производительность по сравнению с MDX/SQL.

В 2010 году DAX вместе с табулярной моделью данных был интегрирован в SSAS версии 2012[4] и выпущено дополнение для Microsoft Excel 2010 Professional, версия которого стала именоваться Professional Plus.

Эксперимент был признан успешным поскольку в дальнейшем Microsoft встраивала поддержку DAX во все свои продукты линейки Microsoft Analysis Services редакций Enterprise и Business Intelligence (SQL Server 2014, SQL Server 2016,SQL Server 2017)[5] и расширенные версии Microsoft Excel для платформы Windows (Excel 2013, Excel 2016), а также облачные реализации на платформе Azure[6][7].

В начале 2015 года был выпущен первый продукт линейки Power BI — Power BI Designer в котором были интегрированы все «Power»-технологии, входившие в виде дополнений или иным образом интегрированные с Excel — PowerPivot, Power Query, Power View и Power Maps. В конце 2015 года этот интегрированный продукт сменил название на Power BI Desktop, c того же момента он свободен от лицензионных отчислений для персонального использования.

Примечания[править | править код]

  1. Интервью с разработчиком DAX (Jeffrey Wang). (нем./англ.)
  2. Типы функций DAX. Дата обращения 13 октября 2013.
  3. SQL Explore. Extreme Analysis Service.
  4. Электронная документация по SQL Server 2012. Microsoft.
  5. Возможности, поддерживаемые различными выпусками SQL Server 2014.
  6. Создание модели на портале Azure. Microsoft. Дата обращения 3 июня 2018.
  7. How to setup a tabular data model in SSAS Azure. Дата обращения 1 мая 2017.

Литература[править | править код]

Ссылки[править | править код]