SWITCH
Функция проверяет указанное выражение на соответствие ряду условий и возвращает значения в зависимости от этих условий. Это позволяет более гибко управлять логикой вычислений, заменяя несколько вложенных операторов IF.
Синтаксис
SWITCH(<Expression>, <Value 1>, <Result 1>[, <Value 2>, <Result 2>], ... [, <Else>])
где
<Expression>– выражение, которое будет вычислено и использовано для проверки значений. Допускается любое скалярное выражение или логическая константа (TRUE или FALSE).<Value 1>, <Result 1>, ...– пары значений и соответствующих им результатов. Если<Expression>совпадает с<Value n>, то возвращается<Result n>. Вы можете указать множество таких пар.<Else>– (необязательно) значение, которое возвращается, если<Expression>не совпадает ни с одним из указанных значений.
Данная реализация функции SWITCH не поддерживает использование произвольных логических выражений в качестве первого аргумента. Например:
Category =
SWITCH(
MAX(Table[Column]) > 100,
SUM('Продажи_Факт'[Продажи]) < 5000, "Low",
SUM('Продажи_Факт'[Продажи]) >= 5000 && SUM ('Продажи_Факт'[Продажи]) < 10000, "Medium",
SUM('Продажи_Факт'[Продажи]) >= 10000, "High",
"Unknown"
)При этой такой код допустим:
Category = SWITCH(
TRUE,
SUM('Продажи_Факт'[Продажи]) < 5000, "Low",
SUM('Продажи_Факт'[Продажи]) >= 5000 && SUM ('Продажи_Факт'[Продажи]) < 10000, "Medium",
SUM('Продажи_Факт'[Продажи]) >= 10000, "High",
"Unknown"
)Пример 1
Предположим, у вас есть таблица с данными о продажах и вы хотите вычислить общую сумму продаж с учетом повышения цен для различных годов. Для этой цели можно использовать следующую формулу:
Сумма продаж после повышения цен = SUMX(
'факты онлайн продаж',
'факты онлайн продаж'[unitprice] *
SWITCH (
YEAR('факты онлайн продаж'[datekey]),
2022, 1.2,
2023, 1.3,
2024, 1.4,
1
)
)где
'факты онлайн продаж'[unitprice]– цена за единицу товара.SWITCH– определяет коэффициент повышения цены в зависимости от года, взятого из столбца[datekey]В 2022 году цена увеличивается в 1,2 раза. В 2023 году цена увеличивается в 1,3 раза. В 2024 году цена увеличивается в 1,4 раза. Для всех других лет применяется коэффициент 1 (то есть, цена не изменяется).
Пример 2
Предположим, вы хотите классифицировать уровень продаж в зависимости от их объема. Для этого можно использовать следующую формулу:
Уровень продаж = SWITCH(
TRUE,
SUM('Продажи_Факт'[Продажи]) < 15000, "Низкий",
SUM('Продажи_Факт'[Продажи]) >= 15000 && SUM('Продажи_Факт'[Продажи]) < 30000, "Средний",
SUM('Продажи_Факт'[Продажи]) >= 30000, "Высокий",
"Неизвестно"
)где
SWITCH– используется для выбора значения из списка альтернатив на основе условий.TRUE– используется для последовательной проверки условий. Это позволяет выполнять условия в стиле "если-иначе" (if-else).SUM('Продажи_Факт'[Продажи]) < 15000– первое проверяемое условие. Если сумма продаж в таблице 'Продажи_Факт' меньше15000, то результат будет"Низкий".SUM('Продажи_Факт'[Продажи]) >= 15000 && SUM('Продажи_Факт'[Продажи]) < 30000– второе проверяемое условие. Если сумма продаж находится в диапазоне от15000до29999(включительно), результат будет"Средний".SUM('Продажи_Факт'[Продажи]) >= 30000– третье проверяемое условие. Если сумма продаж равна или больше30000, результат будет"Высокий".5.
"Неизвестно"– если по какой-то причине ни одно из условий не выполняется, будет возвращено значение"Неизвестно".
Смотрите также
Моделирование данных с помощью DAX
Поддерживаемые функции DAX
Математические операторы
Нужна дополнительная помощь?