КОММУТАТОР

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

Синтаксис

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

Параметры

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

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

Если имеется совпадение со значением, возвращается скалярное значение из соответствующего результата . Если нет совпадения со значением, возвращается значение из другого . Если ни одно из значений не совпадает и другое не указано, возвращается ЗНАЧЕНИЕ BLANK.

Замечания

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

Примеры

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

= 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, как показано в следующем примере, которое сравнивает reorder Point и Сейф ty Stock Level на продуктах для выявления потенциальных рисков выхода из запасов:

= 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"
        )


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

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

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

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