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函数的效率高。

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