ЕСЛИ производительность по формуле DAX - PullRequest
1 голос
/ 24 апреля 2020

Я застрял на простой проблеме производительности. У меня есть формула RunningBalance. У меня нет проблем с этой формулой. Это дает мне последнее непустое значение баланса. (У меня есть баланс по строкам.)

Затем я пытаюсь написать другую формулу с использованием этой формулы. Цель проста. Новая формула может ничего не показывать (BLANK ()), когда она <= 0 </p>

, я пытался

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

enter image description here

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

я написал эту простую формулу. Но это очень медленно, когда я использую DocumentNumber для строк.

Как я могу сделать эту формулу быстрее?

1 Ответ

0 голосов
/ 24 апреля 2020

Без переменных

Я бы немного изменил требование и попытался бы изменить 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 () и, возможно, найдите другую реализацию.

...