Оптимизация DAX имеет сумму X или больше во временных рамках - PullRequest
0 голосов
/ 07 февраля 2019

Я рассчитываю ускорить этот расчет, загрузка которого занимает одну или две минуты каждый раз, когда я добавляю другое представление фильтра на страницу.

Базовая мера просто рассчитывает общее количество входов в систему за скользящий 3-месячный период, который работает, как и ожидалось.

TotalLoginsIn90 =
CALCULATE (
    SUM ( [Logins] ),
    DATESINPERIOD ( 'Calendar'[Date], LASTDATE ( Logins[Date] ), -3, MONTH )
)

Сейчас я хочу определить в каждом месяце количество пользователей, которые получают более 3логины в каждом месяце.

CustLoginIn90 =
CALCULATE (
    SUMX ( DISTINCT ( Logins[Customer Number)] ), 1 ),
    FILTER (
        VALUES ( Logins[Cust Customer Number (Numeric)] ),
        [TotalLoginsIn90] > 3
    )
)

или

CustLoginIn90 =
CALCULATE (
    DISTINCT ( Logins[Customer Number] ),
    FILTER (
        VALUES ( Logins[Cust Customer Number (Numeric)] ),
        [TotalLoginsIn90] > 3
    )
)

каждый из них занимает приятное время для расчета, но заканчивается правильным количеством.

Есть ли какие-либоспособ ускорить эти меры?

Спасибо за помощь!

1 Ответ

0 голосов
/ 08 февраля 2019

Я бы порекомендовал сделать TotalLoginsIn90 в качестве вычисляемого столбца вместо меры, поэтому его нужно вычислять только один раз (за обновление отчета).

TotalLoginsIn90 = 
CALCULATE (
    SUM ( [Logins] ),
    DATESINPERIOD (Logins[Date], Logins[Date], -3, MONTH)
)

Это также позволяет писать оченьпростое условие для вашей CustLoginIn90 меры:

CustLoginIn90 = SUMX(Logins, IF(Logins[TotalLogins90] > 3, 1, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...