DAX: DIVIDE函數 vs 除法操作符

在DAX表達式中進行除法運算有兩個選擇,一個是使用DIVIDE函數,另外一個是使用除法操作符,即/(斜槓)。二者在邏輯處理和運算效率上存在一定差別。

使用DIVIDE函數時需要輸入兩個參數,一個是被除數(分子),另外一個是除數(分母)。這兩個參數可以是常數,也可以是DAX表達式。由於除法運算中規定除數不能爲0,但當除數是某個DAX表達式時,其返回結果可能會出現0或者Null的情況。因此,微軟在DIVIDE函數內進行了特殊處理,當被除數爲0或Null的情況時,DIVIDE函數會返回Null結果,使得運算可以正常進行下去,而不會中斷拋錯。DIVIDE函數運算相當於下面這個使用除法操作符的DAX表達式。

Divide =
IF (
    OR (
        ISBLANK ( [除數] ),
        [除數] == 0
    ),
    BLANK (),
    [被除數] / [除數]
)

DIVIDE函數內這一特殊處理機制不是簡單的使用IF進行判斷,而是在運算底層進行了優化,相比這種使用IF函數和除法操作符的DAX表達式效率要高很多。因此,如果除數(分母)是某個DAX表達式時,應該使用DIVIDE函數進行除法運算,以便能獲得最好的計算效率。
但如果除數是一個不爲0的常量,則應該直接使用除法操作符進行計算。因爲在除法操作符這一方法內沒有檢查除數是否爲0的步驟,會對數值直接進行計算,因此在這種情況下,除法操作符的運算效率會比DIVIDE函數的效率高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章