Спецификация синтаксиса DAX для PowerPivot

Язык выражений анализа данных (DAX) представляет библиотеку функций, операторов и констант, с помощью сочетания которых можно строить формулы и выражения в PowerPivot для Excel. В этом разделе приводятся подробные данные о синтаксисе и требованиях языка DAX.

Примеры различных типов формул, доступных для построения, и правила использования выражений для фильтрации таблиц и изменения контекста см. в разделе Getting Started with Data Analysis Expressions (DAX). Этот раздел состоит из следующих подразделов:

Требования к синтаксису

Требования к именам

Функции

Операторы и константы

Типы данных

Требования к синтаксису

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

  • В Microsoft Excel можно ссылаться на отдельные ячейки или массивы, а в PowerPivot — только на полные таблицы или столбцы данных. Однако при необходимости работать только с частью столбца или с уникальными значениями столбца можно добиться похожего поведения с использованием функций DAX, которые фильтруют столбец или возвращают уникальные значения.

  • В формулах DAX не поддерживаются в точности те же типы данных, что и в Microsoft Excel. В целом DAX предоставляет больше типов данных, чем Excel, и для некоторых типов данных при импорте выполняется неявное преобразование типа. Дополнительные сведения см. в разделе Data Types in DAX.

Формула DAX всегда начинается со знака равенства (=). После знака равенства можно ввести любое выражение, вычисляющее скалярное значение, или выражение, которое может быть преобразовано в скалярное значение. В том числе следующие:

  • Скалярную константу или выражение, использующее скалярные операторы (+,-,*,/,>=,...,&&, ...)

  • Ссылки на столбцы или таблицы. В языке DAX в качестве входных аргументов функций всегда используются таблицы и столбцы. Массив или произвольный набор значений не может быть входным аргументом.

  • Операторы, константы и значения, указываемые в выражении.

  • Результат и обязательные аргументы функции. Некоторые функции DAX возвращают таблицу вместо скалярного значения, поэтому они должны быть заключены в функцию, преобразующую таблицу в скалярное значение, если таблица не состоит из одного столбца и одной строки. Тогда она обрабатывается как скалярное значение.

    Большинство функций PowerPivot требуют наличия одного или нескольких аргументов, которые могут включать таблицы, столбцы, выражения и значения. Однако некоторые функции, такие как PI, не требуют каких-либо аргументов, но всегда требуют наличия круглых скобок, указывающих пустой аргумент. Например, функцию PI всегда следует вводить в виде PI(), а не просто PI. Также можно вкладывать функции в другие функции.

  • Выражения. Выражение может содержать любые из следующих объектов: операторы, константы или ссылки на столбцы.

Например, все следующие выражения являются допустимыми формулами.

Формула

Результат

=3

3

="Sales"

Sales

='Sales'[Amount]

При использовании этой формулы в таблице Sales будет возвращено значение столбца Amount таблицы Sales в текущей строке.

=(0.03 *[Amount])

=0.03 * [Amount]

Три процента от значения в столбце Amount текущей таблицы.

С помощью этой формулы можно вычислить процентное значение, но для вывода результата в виде процентов требуется форматирование.

=PI()

Значение константы «пи».

Примечание

Поведение формул может зависеть от того, применяются они к вычисляемому столбцу или сводной таблице.Всегда необходимо учитывать контекст и то, каким образом данные, используемые в формуле, соотносятся с данными, которые могут использоваться в вычислениях.Дополнительные сведения см. в разделе Context in DAX Formulas.

Требования к именам

Окно PowerPivot может содержать несколько таблиц, каждая из которых находится на отдельной вкладке. Таблицы и их столбцы вместе образуют базу данных, расположенную в памяти подсистемы аналитики PowerPivot xVelocity (VertiPaq). Все таблицы в пределах этой базы данных должны иметь уникальные имена. Имена столбцов в пределах таблицы также должны быть уникальными. В именах объектов не учитывается регистр. Например, имена SALES и Sales соответствуют одной таблице.

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

Если таблицы и столбцы используются в качестве входных аргументов функции, как правило необходимо указывать полные имена столбцов. Полное имя столбца состоит из имени таблицы, за которым следует имя столбца в квадратных скобках, например, 'U.S. Sales'[Products]. Полное имя всегда обязательно для ссылок на столбец в следующих контекстах:

  • В качестве аргумента функции VALUES

  • В качестве аргумента функции ALL или ALLEXCEPT

  • В аргументе фильтра для функции CALCULATE или CALCULATETABLE

  • В качестве аргумента функции RELATEDTABLE

  • В качестве аргумента любой функции логики операций со временем

Неполное имя столбца — это просто имя столбца в квадратных скобках, например, [Sales Amount]. Например, в ссылке на скалярное значение из одной и той же строки текущей таблицы можно указать неполное имя столбца.

Если имя таблицы содержит пробелы, зарезервированные ключевые слова или недопустимые символы, необходимо заключить его в одинарные кавычки. Также необходимо заключать в кавычки имена таблиц, содержащие любые символы вне диапазона алфавитно-цифровых символов ANSI, независимо от поддержки кодировки в локали. Например, если открыть книгу, которая содержит имена таблиц, написанные кириллицей, например «Таблица», то такое имя нужно заключить в кавычки, хотя оно не содержит пробелов.

Примечание

Для упрощения ввода полных имен столбцов рекомендуется использовать функцию автозаполнения формул на клиенте.

Таблицы

  • Имена таблиц обязательно указывать, если столбец находится вне текущей таблицы. Имена таблиц должны быть уникальными в базе данных.

  • Имена таблиц, содержащие пробелы, другие специальные символы или неанглийские алфавитно-цифровые символы, должны быть заключены в одинарные кавычки.

Меры

  • Имена мер всегда должны заключаться в квадратные скобки.

  • Имена мер могут содержать пробелы.

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

Столбцы

Имена столбцов должны быть уникальными для таблицы, но несколько таблиц могут иметь столбцы с одинаковыми именами (имя таблицы исключает неоднозначность).

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

Зарезервированные слова

Если имя, используемое для таблицы, совпадает с зарезервированным ключевым словом служб Analysis Services, возникает ошибка и таблицу необходимо переименовать. При этом ключевые слова можно использовать в именах объектов, заключенных в квадратные скобки (для столбцов) или кавычки (для таблиц).

Примечание

Заметьте, что кавычки можно представлять различными символами в зависимости от приложения.Если формулы вставляются из внешнего документа или с веб-страницы, проверьте коды ASCII символов, которые используются для открывающей и закрывающей кавычки, и убедитесь, что они совпадают.В противном случае DAX может не распознать эти символы как кавычки и ссылка станет недопустимой.

Специальные символы

Следующие символы и типы символов недопустимы в именах таблиц, столбцов и мер.

  • Начальные или конечные пробелы, если они не заключены в разделители имен, скобки или апострофы.

  • Управляющие символы

  • Следующие символы недопустимы в именах объектов PowerPivot:

    .,;':/\*|?&%$!+=()[]{}<>

Примеры имен объектов

В следующей таблице приведены примеры имен объектов.

Типы объектов

Примеры

Комментарий

Имя таблицы

Sales

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

Имя таблицы

‘Canada Sales’

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

Полное имя столбца

Sales[Amount]

Имя таблицы предшествует имени столбца, а имя столбца заключено в скобки.

Полное имя меры

Sales[Profit]

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

Неполное имя столбца

[Amount]

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

Полное имя столбца в таблице, имя которой содержит пробелы

‘Canada Sales’[Qty]

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

Примечание

Для упрощения ввода полных имен столбцов рекомендуется использовать при построении формул функцию автозаполнения.Дополнительные сведения см. в разделе Building Formulas for Calculated Columns and Measures.

Прочие ограничения

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

  • Формулы и выражения DAX не могут изменять или вставлять отдельные значения в таблицы.

  • С помощью DAX нельзя создавать вычисляемые строки, можно создавать только вычисляемые столбцы и меры.

  • При определении вычисляемых столбцов можно применять любой уровень вложенности функций.

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

Функции в DAX

DAX содержит следующие типы функций.

Операторы и константы DAX

В следующей таблице перечислены операторы, поддерживаемые языком DAX. В целом операторы в DAX работают так же, как и в Microsoft Excel, за некоторыми незначительными исключениями. Дополнительные сведения о синтаксисе отдельных операторов см. в разделе Справочник по операторам DAX для PowerPivot.

Тип оператор

Символ и назначение

Оператор скобок

() порядок очередности и группирование аргументов

Арифметические операторы

+ (сложение)

- (вычитание/

знак)

* (умножение)

/ (деление)

^ (возведение в степень)

Операторы сравнения

= (равно)

> (больше, чем)

< (меньше, чем)

>= (больше или равно)

<= (меньше или равно)

<> (не равно)

Оператор объединения текста

& (объединение)

Логические операторы

&& (и)

|| (или)

Типы данных в DAX

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

Например, если попытаться сложить число со значением даты, PowerPivot, как и Excel, интерпретирует такую операцию в контексте функции и преобразует числа в общий тип данных, а затем представит результат в нужном формате (формате даты).

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

Важное примечаниеВажно!

PowerPivot не поддерживает использование типа данных Variant, который поддерживается в Excel.Поэтому при загрузке или импорте данных ожидается, что данные в каждом столбце в основном будут иметь согласованный тип данных.

Некоторые функции возвращают скалярные значения, включая строки, а другие функции работают с числами (целыми и вещественными) или со значениями даты и времени. Необходимый тип данных для каждой функции описан в разделе Справочник по функциям DAX.

Таблицы — это новый тип данных в PowerPivot. Таблицы, содержащие несколько столбцов и несколько строк данных, можно использовать в качестве аргумента функции. Некоторые функции также возвращают таблицы, которые хранятся в памяти и могут использоваться в качестве аргументов других функций.

Дополнительные сведения о различных числовых типах данных и типах данных даты и времени, а также подробные сведения об обработке значений NULL и пустых строк см. в разделе Data Types Supported in PowerPivot Workbooks.

См. также

Другие ресурсы

Build a formula