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