Поделиться через


SWITCH

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Вычисляет выражение по списку значений и возвращает одно из нескольких возможных выражений результатов. Эту функцию можно использовать, чтобы избежать нескольких вложенных операторов IF.

Синтаксис

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

Параметры

Термин Определение
expression Любое выражение DAX, возвращающее одно скалярное значение, в котором выражение вычисляется несколько раз (для каждой строки или контекста).
value Константное значение, соответствующее результатам expression.
result Любое скалярное выражение, вычисляемое, если результаты expression соответствуют соответствующим value.
else Любое скалярное выражение, которое необходимо оценить, если результат expression не соответствует ни одному из аргументов value.

Возвращаемое значение

Если имеется совпадение с value, возвращается скалярное значение из соответствующего result. Если нет совпадения с value, возвращается значение из else. Если ни один из values совпадений и else не указан, возвращается BLANK.

Замечания

  • Вычисляемая expression может быть константным значением или выражением. Обычно эта функция используется для установки первого параметра на TRUE. См. приведенные ниже примеры.
  • Все выражения result и выражение else должны иметь одинаковый тип данных.
  • Порядок условий имеет значение. Как только возвращается один value совпадений, возвращается соответствующая result, а другие последующие values не оцениваются. Убедитесь, что наиболее строгие values для оценки указаны до менее строгих values. См. приведенные ниже примеры.

Примеры

Часто используется SWITCH для сравнения expression с константными values. В следующем примере создается вычисляемый столбец имен месяцев:

= SWITCH (
         [Month Number Of Year],
         1, "January",
         2, "February",
         3, "March",
         4, "April",
         5, "May",
         6, "June",
         7, "July",
         8, "August",
         9, "September",
         10, "October",
         11, "November",
         12, "December",
         "Unknown month number"
        )

Еще одним общим использованием SWITCH является замена нескольких вложенных операторов IF. Это достигается путем задания выражения для TRUE, как показано в следующем примере, который сравнивает уровень переупорядочения точки и безопасности акций на продуктах для выявления потенциальных рисков выхода из запасов:

= SWITCH (
        TRUE,
        [Reorder Point] > [Safety Stock Level], "Good: Safety stock level exceeded",
        [Reorder Point] = [Safety Stock Level], "Minimal: Safety stock level met",
        [Reorder Point] < [Safety Stock Level], "At risk: Safety stock level not met",
        ISBLANK ( [Reorder Point] ), "Incomplete: Reorder point not set",
        ISBLANK ( [Safety Stock Level] ), "Incomplete: Safety stock level not set",
        "Unknown"
        )

Порядок values вопросов. В следующем примере второй result никогда не возвращается, так как первое значение является менее строгим, чем второе. Результат в этом примере всегда A или C, но никогда не B.

= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

Следующая инструкция возвращает ошибку, так как типы данных в аргументах result отличаются. Помните, что типы данных во всех result и else аргументах должны быть одинаковыми.

= SWITCH (
        [Class],
        "L", "Large",
        "H", 0.1
        )