SWITCH

適用於:導出數據行計算數據表Measure視覺計算

根據 valuesand 清單評估表達式,傳回多個可能的結果表達式之一。 這個函式可用來避免有多個巢狀 IFstatements。

語法

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

參數

詞彙 定義
expression 傳回單一純量 value 傳回單一純量的任何 DAX 表示式,其中表達式會多次評估(針對每個數據列/內容)。
value 要與 expression結果相符的常數 value。
result 要評估的任何純量表達式,ifexpression 結果符合對應的 value
else 要評估的任何純量表達式,ifexpression 的結果不符合任何 value 自變數。

傳回 value

If 會傳回對應 result 的純量 value 與 value相符專案。 If 與 value不相符,則會傳回來自 else 的 value。 未指定 values 比對 andelse 的 Ifnone,則會傳回 BLANK。

備註

  • 要評估的 expression 可以是表達式 valueor 常數。 這個函式的常見用法是將 first 參數設定為 TRUE。 請參閱以下的範例。
  • All result 表示式 andelse 運算式必須是相同的數據類型。
  • 條件的順序很重要。 一旦 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 用法是 replace 多個巢狀 IFstatements。 這可藉由將表達式設定為 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 的順序很重要。 在下列範例中,永遠不會傳回 secondresult,因為 firstvalue 的限制比 second小。 此範例的結果一律 AorC,但絕對不會 B

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

下列語句會傳回 error,因為 result 自變數中的數據類型不同。 請記住,allresultandelse 自變數中的數據類型必須相同。

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