Спецификация синтаксиса 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.