Справочник по операторам DAX для PowerPivot

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

Типы операторов

Операторы вычисления делятся на четыре типа: арифметические операторы, операторы сравнения, операторы объединения текста и логические операторы.

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

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

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

Значение

Пример

+ (знак «плюс»)

Сложение

3+3

- (знак «минус»)

Вычитание или знак

3–1–1

* (звездочка)

Умножение

3*3

/ (косая черта)

Деление

3/3

Знак вставки (^)

Возведение в степень

16^4

ПримечаниеПримечание

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

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

Для сравнения двух значений используются следующие операторы. При сравнении двух значений с использованием этих операторов результат представляет собой логическое значение: TRUE или FALSE.

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

Значение

Пример

=

Равно

[Region] = "USA"

>

Больше чем

[Sales Date] > "Jan 2009"

<

Меньше чем

[Sales Date] < "Jan 1 2009"

>=

Больше или равно

[Amount] >= 20000

<=

Меньше или равно

[Amount] <= 100

<>

Не равно

[Region] <> "USA"

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

Амперсанд (&) используется, чтобы объединить (сцепить) две или более текстовые строки для формирования единого фрагмента текста.

Текстовый оператор

Значение

Пример

& (амперсанд)

Соединяет (объединяет) два значения, образуя одно непрерывное текстовое значение

[Region] & ", " & [City]

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

Для объединения выражений и получения единого результата используются логические операторы (&&) и (||).

Текстовый оператор

Значение

Примеры

&& (двойной амперсанд)

Создает между двумя выражениями, каждое из которых дает логический результат, условие логического И. Если оба выражения возвращают значение TRUE, то их сочетание также возвращает значение TRUE. В противном случае возвращается значение FALSE.

([Region] = "France") && ([BikeBuyer] = "yes"))

|| (двойная вертикальная черта)

Создает между двумя логическими выражениями условие логического ИЛИ. Если любое из выражений возвращает значение TRUE, результатом будет значение TRUE. Значение FALSE возвращается только в случае, когда оба выражения возвращают значение FALSE.

(([Region] = "France") || ([BikeBuyer] = "yes"))

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

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

Порядок вычисления

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

За знаком равенства располагаются вычисляемые элементы (операнды), разделенные операторами вычисления. Выражения всегда считываются слева направо, однако порядком группирования элементов можно в некоторой степени управлять с помощью скобок.

Приоритет операторов

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

Оператор

Описание

^

Возведение в степень

Знак (как в –1)

* и /

Умножение и деление

!

NOT (унарный оператор)

+ и –

Сложение и вычитание

&

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

=< ><=>=<>

Сравнение

Управление порядком вычисления с помощью скобок

Чтобы изменить порядок вычисления, следует заключить в скобки ту часть формулы, которая должна вычисляться в первую очередь. Например, результатом следующей формулы будет число 11, поскольку умножение выполняется перед сложением. Сначала 2 умножается на 3, а затем результат добавляется к 5.

=5+2*3

Если же изменить синтаксис с помощью скобок, то порядок изменяется таким образом, что сначала складываются 5 и 2, а затем результат умножается на 3, и получается 21.

=(5+2)*3

В следующем примере скобки вокруг первой части формулы вызывают принудительное вычисление выражения (3 + 0.25) в первую очередь, а затем результат делится на результат выражения (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)

В следующем примере, в соответствии с правилами приоритета для операторов, сначала применяется оператор возведения в степень, а затем оператор знака. Результатом выражения является -4.

=-2^2

Чтобы оператор знака применялся первым, можно заключить числовое значение в скобки, как показано в следующем примере. Результатом выражения является 4.

= (-2)^2

Примечания о совместимости

DAX удобен для обработки и сравнения различных типов данных. Он работает во многом аналогично Microsoft Excel. Однако его базовое ядро основано на службах SQL Server Analysis Services и предоставляет много расширенных функций реляционного хранилища данных, в том числе предоставляя расширенную поддержку типов даты и времени. Поэтому в некоторых случаях результаты вычислений и правила работы функций могут отличаться от Excel. Кроме того, DAX поддерживает больше типов данных, чем Excel. Основные различия описываются в этом разделе.

Приведение типов данных операндов

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

  1. Сначала оба операнда преобразуются в самый большой из возможных типов данных.

  2. Затем операнды сравниваются.

Например, необходимо объединить два числа. Первое число получается путем вычисления формулы, например =[Price] * .20, и результат может занимать несколько десятичных разрядов; второе число является целым и задается в виде строкового значения.

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

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

Типы данных, используемые в DAX

Типы данных, используемые в Excel

Numbers (I8, R8)

Логическое значение

Строковые значения

DateTime

Валюта

Numbers (R8)

Логическое значение

Строковые значения

Variant

Валюта

Дополнительные сведения о неявном преобразовании типов данных см. в разделе Типы данных, поддерживаемые в книгах PowerPivot.

Различия в порядке очередности

Порядок очередности операций в формулах DAX в основном совпадает с порядком, применяемым в Microsoft Excel, однако некоторые операторы Excel, в том числе проценты, не поддерживаются. Кроме того, не поддерживаются диапазоны.

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

См. также

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

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

Общие сведения по выражениям анализа данных (DAX)