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
)