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() 的必要性,也许会找到不同的实现方式。
我被简单的性能问题困住了。 我有一个 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() 的必要性,也许会找到不同的实现方式。