операторов DAX;

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

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

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

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

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

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

Ескерім

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

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

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

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

Все операторы сравнения, кроме == обрабатывают ПУСТОе значение равным числу 0, пустой строке "", DATE(1899, 12, 30) или FALSE. В результате [столбец] = 0 будет true, если значение [Столбец] равно 0 или ПУСТО. Напротив, [столбец] == 0 имеет значение true, только если значение [столбец] равно 0.

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

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

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

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

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

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

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

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

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

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

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

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

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

Operator Description
^ Возведение в степень
Вход (как в –1)
*И/ Умножение и деление
+ и – Сложение и вычитание
& Подключение две строки текста (объединение)
=,==,<,>,<=,>=,<>,IN Сравнение
Логическое НЕ 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 со значениями типа Integer.

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

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

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

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

Синтаксис DAX
Именование параметров DAX