операторов 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 преобразует их в общий тип данных для применения оператора в некоторых случаях:
- Оба операнда преобразуются в самый большой распространенный тип данных.
- Оператор применяется, если это возможно.
Например, предположим, что у вас есть два числа, которые нужно объединить. Один номер результатов формулы, например =[Price] * .20
, и результат может содержать много десятичных разрядов. Другое число — целое число, предоставленное в виде строкового значения.
В этом случае DAX преобразует оба числа в реальные числа в числовом формате, используя самый большой числовой формат, который может хранить оба типа чисел. Затем DAX будет применять умножение.
В зависимости от сочетания типов данных приведение типов может не применяться для операций сравнения. Полный список типов данных, поддерживаемых DAX, см. в разделе "Типы данных", поддерживаемые табличными моделями и типами данных в Power BI Desktop.
Целочисленное число, реальное число, валюта, дата и время и пустое считаются числовыми для сравнения. Пустое значение равно нулю при выполнении сравнения. Для операций сравнения поддерживаются следующие сочетания типов данных.
Тип данных в левой части | Тип данных правой стороны |
---|---|
Числовое | Числовое |
Логический | Логический |
Строка | Строка |
Другие сравнения смешанных типов данных возвращают ошибку. Например, формула ="1" > 0 возвращает ошибку Операции сравнения DAX не поддерживают сравнение значений типа Text со значениями типа Integer.
Типы данных, используемые в DAX | Типы данных, используемые в Excel |
---|---|
Числа (I8, R8) | Числа (R8) |
Строка | Строка |
Логический | Логический |
Дата/время | Вариант |
Валюта. | Валюта. |
Различия в порядке приоритета
Порядок приоритета операций в формулах DAX в основном совпадает с тем, что используется Microsoft Excel, но некоторые операторы Excel не поддерживаются, например процент. Кроме того, диапазоны не поддерживаются.
Поэтому всякий раз, когда вы копируете и вставляете формулы из Excel, внимательно просматривайте формулу, так как некоторые операторы или элементы в формулах могут быть недопустимыми. Если есть сомнения в том порядке, в котором выполняются операции, рекомендуется использовать скобки для управления порядком операций и удаления неоднозначности результатов.