[SWITCH]
値のリストに対して式を評価し、考えられる複数の結果式のいずれかを返します。 この関数を使用すると、入れ子になった IFステートメントが複数存在しないようにすることができます。
構文
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
パラメーター
用語 | 定義 |
---|---|
expression | 1 つのスカラー値を返す任意の DAX 式。式は複数回評価されます (行/コンテキストごと)。 |
value | expression の結果と照合される定数値。 |
結果 | expression の結果が対応する value と一致した場合に評価される任意のスカラー式。 |
else | expression の結果がいずれの value 引数とも一致しない場合に評価される任意のスカラー式。 |
戻り値
value との一致があった場合、対応する result からのスカラー値が返されます。 value との一致がない場合は、else の値が返されます。 一致する value がなく、else の値が指定されていない場合は、BLANK が返されます。
解説
- 評価される expression には、定数値または式を指定できます。 この関数の一般的な用途は、最初のパラメーターを TRUE に設定することです。 以下の例を参照してください。
- すべての result 式と else 式は、同じデータ型である必要があります。
- 条件の順序は重要です。 1 つの value が一致すると対応する result の値が返され、それ以降の value は評価されません。 制限が最も厳しい value が、制限の緩い valueの前に評価されるよう指定してください。 以下の例を参照してください。
例
SWITCH の一般的な用途の 1 つは、expressionと定数 value を比較することです。 次の例では、月名の計算列を作成します。
= 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 のもう 1 つの一般的な用途は、入れ子になった複数の 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"
)
value の順序は重要です。 次の例では、最初の値の制限が 2 番目の値の制限よりも緩いため、2 番目の 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
)