операторы DAX
Язык анализа данных (DAX) использует операторы для создания выражений, которые сравнивают values, выполняют арифметические вычисления, or работают со строками.
Типы операторов
Существует четыре различных типа операторов вычислений: арифметическое, сравнение, объединение текста, and логические.
Арифметические операторы
Для выполнения основных математических операций, таких как добавление, вычитание, or умножение; объединение чисел; and производить числовые результаты, используйте следующие арифметические операторы.
Арифметический оператор | Значение | Пример |
---|---|---|
+ (плюс sign) |
Сложение | 3+3 |
- (минус sign) |
Вычитание orsign | 3-1-1 |
* (звездочка) |
Умножение | 3*3 |
/ (косая черта вперед) |
Деление | 3/3 |
^ (карет) |
Экспоненциация | 16^4 |
Заметка
Плюс sign может функционировать как двоичный операторand, так и как унарный оператор . Для двоичного оператора требуются числа на обеих сторонах оператора, and выполняет добавление. При использовании values в формуле DAX с обеих сторон двоичного оператора DAX пытается привести values к числовым типам данных if они уже not числа. Напротив, унарный оператор может применяться к любому типу аргумента. Символ "плюс" not влияет на тип orvalueand просто игнорируется, а оператор минус создает отрицательный value, if примененный к числовым value.
Операторы сравнения
Вы можете сравнить два values с помощью следующих операторов. При сравнении двух values с помощью этих операторов результатом является логический valueлибо TRUE
orFALSE
.
Оператор сравнения | Значение | Пример |
---|---|---|
= |
Равно | [Регион] = "США" |
== |
Строгое равенство | [Регион] == "США" |
> |
Больше чем | [Продажи Date] > "Январь 2009" |
< |
Менее | [Продажи Date] < "1 января 2009 года" |
>= |
Больше, чем or, равно | [Сумма] >= 20000 |
<= |
Меньше or или равно | [Сумма] <= 100 |
<> |
Not равно | [Регион] <> "США" |
All операторы сравнения except == обрабатывают BLANK как равные числу 0, пустой строке "", DATE(1899, 12, 30), orFALSE
. В результате [столбец] = 0 будет true, если value [столбец] равно 0 orBLANK. В отличие от этого, [столбец] == 0 true только тогда, когда value [столбец] равен 0.
Оператор объединения текста
Используйте амперсанд (&
) для объединения, orconcatenate, двух or больше текстовых строк для создания одного фрагмента текста.
Текстовый оператор | Значение | Пример |
---|---|---|
& (амперсанд) |
Сцепляет or, объединяя два values, чтобы получить один непрерывный текст value. | [Region] & ", " & [City] |
Логические операторы
Используйте логические операторы (&&
) and (||
) для объединения выражений для создания одного результата.
Текстовый оператор | Значение | Примеры |
---|---|---|
&& (двойной амперсанд) |
Создает условие AND между двумя выражениями, которые имеют логический результат.
If оба выражения возвращают TRUE , сочетание выражений также возвращает TRUE ; в противном случае сочетание возвращает FALSE . |
([Region] = "France") && ([BikeBuyer] = "yes")) |
|| (символ двойного канала) |
Создает условие OR между двумя логическими выражениями.
If одно из выражений возвращает TRUE , результатом является TRUE ; только если оба выражения FALSE , результатом будет FALSE . |
(([Region] = "France") || ([BikeBuyer] = "yes")) |
IN |
Создает логическое OR условие для каждой строки при сравнении с таблицей. Примечание. Синтаксис конструктора таблиц использует фигурные скобки. | 'Product'[Color] IN { "Red", "Blue", "Black" } |
Операторы по порядку приоритета and
В некоторых случаях порядок выполнения вычисления может повлиять на возвращаемый value; Поэтому важно понять, как определяется порядок and, как изменить порядок получения нужных результатов.
Порядок вычислений
Выражение вычисляет операторы andvalues в определенном порядке. All выражения всегда начинаются со знака равенства sign (=). Равно sign указывает, что следующие символы составляют выражение.
Следом за знаком равенства sign идут элементы, которые необходимо вычислить (операнды), разделенные операторами вычисления. Выражения всегда считываются из left в right, но порядок группирования элементов можно контролировать в некоторой степени с помощью круглых скобок.
Приоритет оператора
If объединить несколько операторов в одной формуле, операции упорядочены в соответствии со следующей таблицей. If операторы имеют равный приоритет value, они упорядочены от left до right. Например, if выражение contains как оператор умножения and деления, они вычисляются в том порядке, в который они отображаются в выражении, от left до right.
Оператор | Описание |
---|---|
^ |
Экспоненциация |
– |
Sign (например, –1) |
* and / |
and умножение и деление |
+ and – |
Сложение and вычитание |
& |
Подключает две строки текста (объединение) |
=,==,<,>,<=,>=,<>,IN |
Сравнение |
NOT |
NOT (унарный оператор) |
Использование круглых скобок для управления порядком вычисления
Чтобы изменить порядок вычисления, следует заключить в скобки ту часть формулы, которая должна вычисляться first. Например, следующая формула создает 11, так как умножение вычисляется перед добавлением. Формула умножает 2 на 3, and затем добавляет 5 к результату.
=5+2*3
В отличие от этого, if вы используете скобки, чтобы изменить порядок операций, так, чтобы 5 and 2 сложить вместе, and результат умножить на 3, чтобы получить 21.
=(5+2)*3
В следующем примере круглые скобки вокруг first части формулы принудит вычисление evaluate выражение (3 + 0.25)
firstand затем divide результат по результату выражения, (3 - 0.25)
.
=(3 + 0.25)/(3 - 0.25)
В следующем примере оператор экспонентации применяется firstв соответствии с правилами приоритета для операторов, and затем применяется оператор sign. Результатом этого выражения является -4.
=-2^2
Чтобы обеспечить применение оператора sign к числовым valuefirst, можно использовать скобки для управления операторами, как показано в следующем примере. Результатом этого выражения является 4.
= (-2)^2
Совместимость
DAX легко обрабатывает и and сравнивает различные типы данных, как Microsoft Excel. Однако базовый вычислительный механизм основан на and служб SQL Server Analysis Services предоставляет дополнительные расширенные возможности реляционного хранилища данных, включая более широкие возможности поддержки dateandtime типов. Поэтому в некоторых случаях результаты вычислений or поведение функций может not совпадать с результатами вычислений в Excel. Кроме того, DAX поддерживает больше типов данных, чем Excel. В этом разделе описаны основные различия.
Принудительное выполнение типов данных операндов
Как правило, два операнда на leftandright сторонах любого оператора должны быть одинакового типа данных. Однако if типы данных отличаются, DAX приведет convert их к общему типу данных для применения оператора в некоторых случаях:
- Оба операнда преобразуются в самый большой распространенный тип данных.
- Применяется оператор, возможно if.
Например, предположим, что у вас есть два числа, которые нужно объединить. Одно число является результатом формулы, например =[Price] * .20
, and, результат может содержать много знаков после запятой. Другое число — целое число, которое было предоставлено в виде строки value.
В этом случае DAXconvert оба числа в действительные числа в числовых format, используя самый большой числовой format, который может хранить оба типа чисел. Затем DAX будет применять умножение.
В зависимости от сочетания типов данных приведение типов может not применяться для операций сравнения. Для полного списка типов данных, поддерживаемых DAX, см. раздел «Поддерживаемые типы данных в табличных моделях»andи «Типы данных в Power BI Desktop».
Целое число, реальное число, Currency, Date/timeandBlank считаются числовыми для сравнения. Blank оценивается как нулевое значение при выполнении сравнения. Для операций сравнения поддерживаются следующие сочетания типов данных.
тип данных стороны Left | Тип данных боковой Right |
---|---|
Числовой | Числовой |
булев | булев |
Струна | Струна |
Другие сравнения смешанных типов данных возвращают error. Например, формула, например ="1" > 0, возвращает error, указывающую, что операции сравнения DAX поддерживают not сравнение values типа Text с values целочисленноготипа.
Типы данных, используемые в DAX | Типы данных, используемые в Excel |
---|---|
Числа (I8, R8) | Числа (R8) |
Струна | Струна |
булев | булев |
ДатаВремя | Вариант |
Currency | Currency |
Различия в порядке приоритета
Порядок приоритета операций в формулах DAX в основном совпадает с тем, что используется Microsoft Excel, но некоторые операторы Excel not поддерживаются, например процент. Кроме того, диапазоны поддерживаются not.
Поэтому всякий раз, когда вы копируете формулы and вставки из Excel, внимательно просмотрите формулу, так как некоторые операторы or элементы в формулах могут not быть допустимыми. Если есть какие-либо сомнения в том порядке, в котором выполняются операции, рекомендуется использовать скобки для управления порядком операций and удалить любую неоднозначность результата.