OR (||)

Функция OR возвращает логическое значение TRUE, если один из двух параметров, входящих в эту функцию, также возвращает логическое значение TRUE. Если же оба параметра возвращают FALSE, то функция возвращает FALSE.

Аналогом является логический оператор ||.

Синтаксис

OR(<значение1>,<значение2>)

или

Значение1 || Значение2

где:

значение1 и значение2 – используемые значения.

Примеры

OR

Пример 1

Предположим, у нас есть таблица “факты онлайн продаж” с данными о продажах и таблица "продукты" с данными о продуктах, и мы хотим посчитать сумму продаж для продуктов с брендом "Fabrikam" или "Contoso".

Для этого мы воспользуемся следующей формулой:

Fabrikam или Contoso = CALCULATE ( SUM ( 'факты онлайн продаж'[salesamount] ), FILTER ( 'продукты', OR ( 'продукты'[brandname] IN { "Fabrikam" }, 'продукты'[brandname] IN { "Contoso" } ) ) )

где:

SUM('факты онлайн продаж'[salesamount]) – рассчитывает суммарное значение столбца salesamount из таблицы факты онлайн продаж;

FILTER('продукты', OR( 'продукты'[brandname] IN {"Fabrikam"}, 'продукты'[brandname] IN {"Contoso"})) – возвращает только те строки исходной таблицы продукты, которые удовлетворяют условию внутри OR: бренд продукта ('brandname') должен быть "Fabrikam" или "Contoso":

or.png

Пример 2

Предположим, у нас есть таблица фактов “factonlinesales” с данными о продажах и мы хотим посчитать объем продаж либо для клиента с идентификатором 105, либо для валюты с кодом 1. Для этого мы воспользуемся следующей формулой:

CALCULATE ( SUM ( factonlinesales[salesamount] ), FILTER ( factonlinesales, OR ( factonlinesales[customerkey] = 105, factonlinesales[currencykey] = 1 ) ) )

где:

SUM(factonlinesales[salesamount]) – суммирует значения в столбце salesamount из таблицы factonlinesales;

filter(factonlinesales, OR(factonlinesales[customerkey] = 105,factonlinesales[currencykey]=1)) – возвращает только те строки из factonlinesales, которые удовлетворяют условию OR: строки должны иметь либо customerkey равный 105, либо currencykey равный 1. Таким образом, общая сумма продаж будет рассчитана только для тех строк, которые удовлетворяют условиям фильтра.

В данный момент функция OR не может быть использована для фильтрации по атрибутам из разных измерений (таблиц).

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

Теперь представим, что у вас есть таблица “факты онлайн продаж” со столбцом “salesamount” и таблица “продукты” со столбцом “classname”, и вы хотите вычислить сумму продаж (salesamount) для продуктов, классифицированных как "Economy" или "Regular". Для этого можно воспользоваться следующей формулой:

Economy или Regular = CALCULATE( SUMX('факты онлайн продаж','факты онлайн продаж'[salesamount]), FILTER( 'продукты', 'продукты'[classname] = "Economy" || 'продукты'[classname] = "Regular" ) )

где

'продукты'[classname] = "Economy" || 'продукты'[classname] = "Regular" проверяет, что значение в столбце classname равно "Economy" или "Regular". Итоговым значением будет сумма всех продаж для продуктов класса "Economy" и "Regular".

or2.png

Смотрите также

Моделирование данных с помощью DAX
Поддерживаемые функции DAX
Математические операторы

Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.