синтаксис DAX

В этой статье описаны требования к синтаксису and для языка выражений формул DAX.

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

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

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

  • Ссылки на столбцы таблицы or. Язык DAX всегда использует столбцы таблиц and в качестве входных данных для функций, никогда не произвольный набор valuesв виде массива or.

  • Операторы, константы, andvalues предоставляются как часть выражения.

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

    Для большинства функций DAX требуется один or больше аргументов, которые могут включать таблицы, столбцы, выражения, andvalues. Однако некоторые функции, такие как PI, not требуют каких-либо аргументов, но всегда требуют круглые скобки для указания аргумента NULL. Например, необходимо всегда вводить PI(), notPI. Вы также можете вложить функции в другие функции.

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

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

Формула Результат
= 3 3
= "Sales" Продажи
= 'Sales'[Amount] If вы используете эту формулу в таблице Sales, вы получите value столбца "Сумма" в таблице Sales для текущей строки.
= (0.03 *[Amount])

=0.03 * [Amount]
Три процента от value в столбце "Сумма" текущей таблицы.

Хотя эта формула может использоваться для calculate процента, результат not показан как процент, если в таблице не применяется форматирование.
= PI() value для константы pi.

Формулы могут вести себя по-разному в зависимости от того, как они используются. Необходимо всегда учитывать контекст, and как данные, используемые в формуле, related другим данным, которые могут использоваться в вычислении.

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

Модель данных часто contains нескольких таблиц. Вместе таблицы and их столбцы составляют базу данных, хранящуюся в подсистеме аналитики в памяти (VertiPaq). В этой базе данных all таблицы должны иметь уникальные имена. Имена столбцов также должны быть уникальными в каждой таблице. All имена объектов регистронезависимые; например, имена SALESandSales будут представлять одну и ту же таблицу.

Каждый столбец andmeasure, добавляемый в существующую модель данных, должен принадлежать определенной таблице. Вы указываете таблицу, которая contains столбца неявно, когда создаете вычисляемый столбец в таблице, и or явно, когда создаете measureand, указываете имя таблицы, в которой должно храниться определение measure.

При использовании столбца or таблицы в качестве входных данных функции обычно необходимо имени столбца. полное имя столбца — это имя таблицы, за которым следует имя столбца в квадратных скобках: например, "Продажи в США"[Продукты]. Полностью квалифицированное имя всегда требуется при обращении к столбцу в следующих контекстах:

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

  • В качестве аргумента для функций ALLorALLEXCEPT

  • В аргументе filter для функций CALCULATEorCALCULATETABLE

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

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

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

If Если имя таблицы contains содержит пробелы, зарезервированные ключевые слова или or запрещенные символы, необходимо заключить его в одинарные кавычки. Кроме того, необходимо заключить имена таблиц в кавычки if имя contains любых символов за пределами буквенно-цифровых символов ANSI rangeнезависимо от того, поддерживает ли языковой стандарт набор символов ornot. Например, if вы открываете книгу, которая contains имеет имена таблиц, написанные в кириллических символах, например "Таблица", имя таблицы должно быть заключено в кавычки, even даже если они not содержат пробелы.

Примечание

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

Таблицы

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

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

Меры

  • Measure имена всегда должны находиться в квадратных скобках.

  • названия Measure могут содержать пробелы.

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

Столбцы

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

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

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

If имя, используемое для таблицы, совпадает с зарезервированным ключевым словом Analysis Services, вызывается error, and необходимо переименовать таблицу. Однако ключевые слова можно использовать в именах объектов, if имя объекта заключено в квадратные скобки (для столбцов) or кавычки (для таблиц).

Примечание

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

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

Следующие типы символов and являются допустимыми not в именах таблиц, столбцов, or мер:

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

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

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

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

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

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

Типы объектов Примеры Комментарий
Имя таблицы Продажи If имя таблицы not не содержит пробелов or или других специальных символов, имя not не должно быть заключено в кавычки.
Имя таблицы "Продажи в Канаде" If имя contains пробелы, табуляции or другие специальные символы, заключайте имя в одинарные кавычки.
Полностью квалифицированное имя столбца продажи[сумма] Имя таблицы предшествует имени столбца, and имя столбца заключено в квадратные скобки.
Полностью квалифицированное имя measure Продажи/Прибыль Имя таблицы предшествует имени measure, and имя measure заключено в квадратные скобки. В определенных контекстах всегда требуется полностью квалифицированное имя.
Неуказанное имя столбца [Сумма] Неквалифицированное имя — это имя столбца, заключенное в квадратные скобки. Контексты, в которых можно использовать некачествованное имя, включают, например, формулы в вычисляемом столбце в той же таблице и or в функции агрегирования, выполняющей сканирование той же таблицы.
Полный столбец в таблице с пробелами "Продажи в Канаде"[Кол-во] Имя таблицы contains содержит пробелы, поэтому оно должно быть окружено одинарными кавычками.

Другие ограничения

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

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

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

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

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

операторы DAXand константы

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

Тип оператора Использование символа and
Оператор круглых скобок () порядке приоритета and группирование аргументов
Арифметические операторы + (добавление)

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

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

/ (деление)

^ (экспонентация)
Операторы сравнения = (равно)

> (больше)

< (меньше)

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

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

<> (not равно)
Оператор объединения текста & (объединение)
Операторы логики && (and)

|| (or)

Типы данных

Необходимо not приведение, convert, or в противном случае укажите тип данных столбца orvalue, который используется в формуле DAX. При использовании данных в формуле DAXDAX автоматически идентифицирует типы данных в введённых values ссылочных столбцах and, and выполняет неявные преобразования, необходимые для завершения указанной операции.

Например, if при попытке добавить число в datevalue, подсистема интерпретирует операцию в контексте функции, andconvert числа к общему типу данных, and затем представить результат в предполагаемом format, date.

Однако существуют некоторые ограничения для values, которые можно успешно преобразовать. If value or столбец имеет тип данных, несовместимый с текущей операцией, DAX возвращает error. Кроме того, DAXnot предоставляет функции, которые позволяют явно изменять, convert, or приводить тип данных существующих данных, импортированных в модель данных.

Важно!

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

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

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

Date and time

DAX сохраняет dateandtimevalues с помощью типа данных datetime, используемого Microsoft SQL Server. Datetime format использует число с плавающей запятой, где Datevalues соответствовать целочисленной части, представляющей количество дней с 30 декабря 1899 года. Time values соответствуют десятичной части datevalue, где часы, минуты, and секунды представлены десятичными дробями day. DAX date and time неявно преобразуют convert аргументы к типу данных datetime.

Примечание

Максимальный exact dateTime value, поддерживаемый DAX, — 31 декабря 9999 г. 00:00:00.

Date and time литерал

Начиная с версии августа 2021 года Power BI Desktop, DAXdateand datetime values можно задать в виде литерала в formatdt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss", ordt"YYYY-MM-DD hh:mm:ss". При указании в качестве литерала использование функций DATE, TIME, DATEVALUE, TIMEVALUE в выражении not необходимо.

Например, следующее выражение использует функции DATEandTIME для filter в OrderDate:

DAX
EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)

То же filter выражение можно указать как литерал:

DAX
EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)

Примечание

not not not DAX date and тип format изированного даты и времени в all версиях Power desktop, Analysis Services, andPower Pivot в Excel. Новые and обновленные функциональные возможности DAX обычно first представлены в Power desktop and BI Desktop and затем включены в службы Analysis Services andPower Pivot в Excel.