операторы DAX

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

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

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

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

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

Арифметический оператор Значение Пример
+ (знак плюса) Сложение 3+3
- (знак минуса) Вычитание или знак 3-1-1
* (звездочка) Умножение 3*3
/ (косая черта вперед) Деление 3/3
^ (карет) Экспоненциация 16^4

Заметка

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

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

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

Оператор сравнения Значение Пример
= Равно [Регион] = "США"
== Строгое равенство [Регион] == "США"
> Больше чем [Дата продаж] > "Январь 2009"
< Менее [Дата продаж] < "1 января 2009 года"
>= Больше или равно [Сумма] >= 20000
<= Меньше или равно [Сумма] <= 100
<> Не равно [Регион] <> "США"

Все операторы сравнения, кроме == обрабатываются BLANK как равные числу 0, пустой строке "", (1899, DATE12, 30) или FALSE. В результате [столбец] = 0 будет true, если значение [столбец] равно 0 или BLANK. В отличие от этого, [столбец] == 0 истинно только тогда, когда значение [столбец] равно 0.

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

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

Текстовый оператор Значение Пример
& (амперсанд) Подключает или сцепляет два значения для создания одного непрерывного текстового значения [Region] & ", " & [City]

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

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

Текстовый оператор Значение Примеры
(двойной знак &) Создает условие AND между двумя выражениями, каждое из которых имеет логический результат. Если оба выражения возвращают TRUE, сочетание выражений также возвращает TRUE; в противном случае сочетание возвращает FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (символ двойного канала) Создает условие OR между двумя логическими выражениями. Если одно из выражений возвращает TRUE, результат TRUE; только если оба выражения FALSE, результат является FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Создает логическое OR условие для каждой строки при сравнении с таблицей. Примечание. Синтаксис конструктора таблиц использует фигурные скобки. 'Product'[Color] IN { "Red", "Blue", "Black" }

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

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

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

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

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

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

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

Оператор Описание
^ Экспоненциация
Знак (например, –1)
* и /. Умножение и деление
+ и . Добавление и вычитание
& Подключает две строки текста (объединение)
=,==,<,>,<=,>=,<>,IN Сравнение
NOT 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 будет применять умножение.

В зависимости от сочетания типов данных приведение типов может не применяться для операций сравнения. Полный список типов данных, поддерживаемых данными, см. в разделе "Типы данных", поддерживаемые DAXтабличными моделями и типами данных в Power BI Desktop.

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

Тип данных в левой части Тип данных на правой стороне
Числовой Числовой
булев булев
Струна Струна

Другие сравнения смешанных типов данных возвращают ошибку. Например, формула, например ="1" > 0, возвращает ошибку, указывающую, что DAX операции сравнения не поддерживают сравнение значений типа Text со значениями целочисленного типа.

Типы данных, используемые в DAX Типы данных, используемые в Excel
Числа (I8, R8) Числа (R8)
Струна Струна
булев булев
ДатаВремя Вариант
Валюта Валюта

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

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

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