次の方法で共有


SWITCH

適用対象: 計算列計算テーブルメジャービジュアル計算

値のリストに対して式を評価し、複数の可能な結果式のいずれかを返します。 この関数を使用すると、複数の入れ子になった IF ステートメントを回避できます。

構文

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

パラメーター

用語 定義
expression 式が複数回評価される 1 つのスカラー値を返す任意の DAX 式 (行/コンテキストごとに)。
value expressionの結果と一致する定数値。
result expression の結果が対応する valueと一致する場合に評価されるスカラー式。
else expression の結果が value 引数のいずれにも一致しない場合に評価されるスカラー式。

戻り値

valueとの一致がある場合は、対応する result からスカラー値が返されます。 valueと一致しない場合は、else の値が返されます。 一致する values が指定されておらず、else が指定されていない場合は、BLANK が返されます。

解説

  • 評価する expression には、定数値または式を指定できます。 この関数の一般的な用途は、最初のパラメーターを TRUEに設定することです。 以下の例を参照してください。
  • すべての result 式と else 式は、同じデータ型である必要があります。
  • 条件の順序は重要です。 1 つの 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 のもう 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"
        )

values の順序が重要です。 次の例では、2 番目の result は、最初の値が 2 番目の値よりも制限が緩いため、返されません。 この例の結果は常に 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
        )