Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

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

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

Синтаксис

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

или

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

где:

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

Примеры

OR

Пример 1

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

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

Блок кода
languagedax
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.pngImage Removedor.pngImage Added

Пример 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
📄 Математические операторы

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

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