КОММУТАТОР
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Вычисляет выражение по списку значений и возвращает одно из нескольких возможных выражений результатов. Эту функцию можно использовать, чтобы избежать нескольких вложенных инструкций 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, как показано в следующем примере, которое сравнивает уровень переупорядочения точки и безопасности на продуктах для выявления потенциальных рисков выхода из запасов:
= 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
)