Спецификация синтаксиса DAX для PowerPivot
Язык выражений анализа данных (DAX) представляет библиотеку функций, операторов и констант, с помощью сочетания которых можно строить формулы и выражения в PowerPivot для Excel. В этом разделе приводятся подробные данные о синтаксисе и требованиях языка DAX.
Примеры различных типов формул, доступных для построения, и правила использования выражений для фильтрации таблиц и изменения контекста см. в разделе Общие сведения по выражениям анализа данных (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() |
Значение константы «пи». |
Примечание |
---|
Поведение формул может зависеть от того, применяются они к вычисляемому столбцу или сводной таблице. Всегда необходимо учитывать контекст и то, каким образом данные, используемые в формуле, соотносятся с данными, которые могут использоваться в вычислениях. Дополнительные сведения см. в разделе Контекст в формулах DAX. |
Требования к именам
Окно PowerPivot может содержать несколько таблиц, каждая из которых находится на отдельной вкладке. Таблицы вместе со столбцами образуют базу данных, хранящуюся в подсистеме аналитики в памяти xVelocity (VertiPaq) PowerPivot. Все таблицы в пределах этой базы данных должны иметь уникальные имена. Имена столбцов в пределах таблицы также должны быть уникальными. В именах объектов не учитывается регистр. Например, имена 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] |
Имя таблицы содержит пробелы, поэтому необходимо заключить его в одинарные кавычки. |
Примечание |
---|
Для упрощения ввода полных имен столбцов рекомендуется использовать при построении формул функцию автозаполнения. Дополнительные сведения см. в разделе Создание формул для вычислений. |
Прочие ограничения
Требования к синтаксису для каждой функции и тип операции, которая может выполняться функцией, сильно различаются в зависимости от функции. Однако следующие правила применяются ко всем формулам и выражениям.
Формулы и выражения 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.