IF 在 DAX 公式上的表现

IF performance on DAX formula

我被简单的性能问题困住了。 我有一个 RunningBalance 公式。我对这个公式没有问题。它给了我余额的最后一个非空值。 (我有行余额。)

然后我试着用这个公式写另一个公式。 目标很简单。新公式在 <=0

时什么也不会告诉我(空白())

我试过了

RunningBalance:=CALCULATE (
    SUM ( DebitsAndCredits[balance]  );
    LASTNONBLANK (
        'Date'[Day];
        CALCULATE ( SUM (DebitsAndCredits[balance] ) )
    )
)

Newformula:=CALCULATE ( IF ( [RunningBalance] <= 0; BLANK (); [RunningBalance] ) )

我写了这个简单的公式。但是当我在行上使用 DocumentNumber 时它非常慢。

我怎样才能使这个公式更快?

没有变量

我会稍微更改要求并尝试将 IF 更改为:

Newformula:=
MAX(0, [RunningBalance])

使用变量

可能的增强如下:

RunningBalance:=
VAR _V1 = SUM (DebitsAndCredits[balance] )
RETURN
CALCULATE (
    SUM ( DebitsAndCredits[balance]  );
    LASTNONBLANK (
        'Date'[Day];
        _V1)
    )
)

并且,

Newformula:=
VAR _V1 =  [RunningBalance]
RETURN
CALCULATE ( IF ( _V1 <= 0; BLANK (); _V1 ) )

我还会检查以下表达式是否给您正确的结果:

RunningBalance:=
VAR _V1 = SUM (DebitsAndCredits[balance] )
RETURN
CALCULATE (
    _V1;
    LASTNONBLANK (
        'Date'[Day];
        _V1)
    )
)

否则,我会调查使用 LASTNONBLANK() 的必要性,也许会找到不同的实现方式。