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

Ключ

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

Функция проверяет указанное выражение на соответствие ряду условий и возвращает значения в зависимости от этих условий. Это позволяет более гибко управлять логикой вычислений, заменяя несколько вложенных операторов 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(
    TRUE()MAX(Table[Column]) > 100,
    SUM('Продажи_Факт'[Продажи]) < 5000, "Low",
    SUM('Продажи_Факт'[Продажи]) >= 5000 && SUM ('Продажи_Факт'[Продажи]) < 10000, "Medium",
    SUM('Продажи_Факт'[Продажи]) >= 10000, "High",
    "Unknown"
)

При этой такой код допустим:

Блок кода
Category = SWITCH(
    TRUE,
    [Sales]SUM('Продажи_Факт'[Продажи]) < 5000, "Low",
    [Sales]SUM('Продажи_Факт'[Продажи]) >= 5000 && SUM [Sales]('Продажи_Факт'[Продажи]) < 10000, "Medium",
    [Sales]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 (то есть, цена не изменяется).

    switch.png

Пример 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. "Неизвестно" – если по какой-то причине ни одно из условий не выполняется, будет возвращено значение "Неизвестно".

    switch2.pngImage Added

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

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

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

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