SWITCH
複数の結果式のいずれかを返 valuesand のリストに対して式を評価します。 この関数を使用すると、複数の入れ子になった IFstatementsを回避できます。
構文
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
パラメーター
用語 | 定義 |
---|---|
expression |
1 つのスカラー value を返す任意の DAX 式。式は (行/コンテキストごとに) 複数回評価されます。 |
value |
expression の結果と一致する定数 value。 |
result |
評価するスカラー式は、対応する value と一致 expression 結果 if します。 |
else |
expression の結果 if 評価されるスカラー式は、どの value 引数にも一致しません。 |
value を返す
value
との一致がある If は、対応する result
からスカラー value が返されます。
value
との一致がない If は、else
からの value が返されます。
values
一致 andelse
の Ifnone が指定されていない場合は、BLANK が返されます。
解説
- 評価する
expression
は、式 valueor 定数にすることができます。 この関数の一般的な用途は、first パラメーターをTRUE
に設定することです。 以下の例を参照してください。 -
else
式 andAllresult
式は、同じデータ型である必要があります。 - 条件の順序は重要です。 1 つの
value
が一致するとすぐに、対応するresult
が返 and、後続の他のvalues
は評価されません。 制限の厳しいvalues
の前に、評価する最も制限の厳しいvalues
が指定されていることを確認します。 以下の例を参照してください。
例
SWITCH の一般的な用途は、expression
と定数 values
を比較することです。 次の例では、month 名の計算列を作成します。
= 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 つの一般的な用途は、複数の入れ子になった IFstatementsを replace することです。 これは、次の例に示すように、式を TRUE
に設定することで実現されます。この例では、製品の並べ替えポイント and 安全在庫レベルを比較して、在庫切れの潜在的なリスクを特定します。
= 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
の順序が重要です。 次の例では、firstvalue が secondよりも制限が緩いため、secondresult
は返されません。 この例の結果は常に A
orC
されますが、B
されることはありません。
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
次のステートメントは、result
引数のデータ型が異なるため、error を返します。
all
result
and
else
引数のデータ型は同じである必要があることに注意してください。
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)