SWITCH
platí pro:Počítaný sloupecPočítaná tabulkamíravizuální
Vyhodnotí výraz na seznamu hodnot a vrátí jeden z více možných výsledných výrazů. Tato funkce se dá použít k tomu, abyste se vyhnuli více vnořeným příkazům IF.
Syntaxe
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parametry
Pojem | definice |
---|---|
expression |
Libovolný výraz DAX, který vrací jednu skalární hodnotu, ve které se má výraz vyhodnotit vícekrát (pro každý řádek nebo kontext). |
value |
Konstantní hodnota, která se má shodovat s výsledky expression . |
result |
Libovolný skalární výraz, který se má vyhodnotit, pokud výsledky expression odpovídají odpovídajícímu value . |
else |
Libovolný skalární výraz, který se má vyhodnotit, pokud výsledek expression neodpovídá žádnému z value argumentů. |
Návratová hodnota
Pokud existuje shoda s value
, vrátí se skalární hodnota z odpovídající result
. Pokud není shoda s value
, vrátí se hodnota z else
. Pokud se žádná z values
neshoduje a else
není zadána, vrátí se BLANK.
Poznámky
-
expression
, která se má vyhodnotit, může být konstantní hodnota nebo výraz. Běžným použitím této funkce je nastavení prvního parametru naTRUE
. Podívejte se na příklady níže. - Všechny výrazy
result
a výrazelse
musí být stejného datového typu. - Na pořadí podmínek záleží. Jakmile se jeden
value
shoduje, vrátí se odpovídajícíresult
a další následnévalues
se nevyhodnotí. Ujistěte se, že jsou před méně omezujícímivalues
zadány nejvíce omezujícívalues
, které se mají vyhodnotit. Podívejte se na příklady níže.
Příklady
Běžným použitím SWITCH je porovnání expression
s konstantními values
. Následující příklad vytvoří počítaný sloupec názvů měsíců:
= 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"
)
Dalším běžným použitím SWITCH je nahrazení více vnořených příkazů IF. Toho dosáhnete nastavením výrazu na TRUE
, jak je znázorněno v následujícím příkladu, který porovnává úroveň Pořadí bodů a bezpečnosti na produktech za účelem identifikace potenciálních rizik výpadků zásob:
= 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"
)
Pořadí values
záleží. V následujícím příkladu se druhý result
nikdy nevrátí, protože první hodnota je méně omezující než druhá. Výsledek v tomto příkladu je vždy A
nebo C
, ale nikdy B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
Následující příkaz vrátí chybu, protože datové typy v argumentech result
se liší. Mějte na paměti, že datové typy ve všech result
a else
argumentech musí být stejné.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)