首页 > 解决方案 > 优化 DAX 在时间范围内有 X 数量或更多

问题描述

我希望加快这个计算,每次我在页面上添加不同的过滤器视图时,加载需要一两分钟。

基本度量仅计算滚动 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
    )
)

这些中的每一个都需要花时间来计算,但最终会得到正确的数量。

有什么办法可以加快这些措施?

谢谢您的帮助!

标签: performancepowerbidaxmeasure

解决方案


我建议将其TotalLoginsIn90作为计算列而不是度量,因此只需要计算一次(每次报告刷新)。

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

这也允许您为您的CustLoginIn90度量编写一个非常简单的条件:

CustLoginIn90 = SUMX(Logins, IF(Logins[TotalLogins90] > 3, 1, 0))

推荐阅读