SWITCH

適用於:匯出數據行匯出數據表量值視覺計算

針對值清單評估運算式,並傳回多個可能結果運算式的其中一個。 此函式可用於避免有多個巢狀 IF 陳述式。

語法

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

參數

詞彙 定義
expression 任何傳回單一純量值的 DAX 運算式,其中運算式會 (針對每個資料列/內容) 多次評估。
value 要與 expression 結果相符的常數值。
result expression 的結果符合對應的 value 時,要評估的任何純量運算式。
else expression 的結果不符合任何 value 引數時,要評估的任何純量運算式。

傳回值

如果有與 value 相符的項目,則會傳回來自對應 result 的純量值。 如果沒有與 value 相符的項目,則會傳回來自 else 的值。 如果沒有任何 value 相符,且未指定 else,則會傳回 BLANK。

備註

  • 要評估的 expression 可能是常值或運算式。 此函式的常見用法是將第一個參數設定為 TRUE。 請參閱以下的範例。
  • 所有 result 運算式和 else 運算式都必須屬於相同的資料類型。
  • 條件的順序很重要。 一旦 value 相符,就會傳回對應的 result,且不會評估其他後續的 value。 確保限制最嚴格的 value 會比限制較少的 value 先指定。 請參閱以下的範例。

範例

SWITCH 的常見用法是比較 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 的另一個常見用法是取代多個巢狀 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 的順序很重要。 在下列範例中,永遠不會傳回第二個 result,因為第一個值的限制小於第二個值。 此範例的結果一律是 “A” 是 “C” ,但絕不會是 “B”。

= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

下列陳述式會傳回錯誤,因為 result 引數中的資料類型不同。 請記住,所有 resultelse 引數中的資料類型必須相同。

= SWITCH (
        [Class],
        "L", "Large",
        "H", 0.1
        )