在计算搅动曲线时如何避免达到内存上限?

时间:2019-04-01 14:59:52

标签: powerbi dax

我正在计算24个月数据的客户流失曲线。 给定的行代表一个人在一个月的会员资格中拥有一种产品。

例如如果某人有一个产品使用了12个月,则他要负责12个标记为0到11的行。

截至目前,我计算了两个份额并将它们彼此除以得到1减去给定月份的客户流失率。

这是通过以下方式计算的:

Andel1 = 
    var Maxstart = MAX(SqlData[StartOpret])
            var Minstart = CALCULATE(DATEADD(SqlData[StartOpret],-5,MONTH),SqlData[StartOpret]=Maxstart)
return
            CALCULATE(COUNTROWS(SqlData),SqlData[Binary]=0,SqlData[Start+periode] <=Maxstart,SqlData[Start+periode]>=Minstart)
Andel2 = 
            var Maxdate = MAX(SqlData[StartOpret])
            var Maxstart = CALCULATE(DATEADD(SqlData[StartOpret],0,MONTH),SqlData[StartOpret]=Maxdate)
            var Minstart = CALCULATE(DATEADD(SqlData[StartOpret],-5,MONTH),SqlData[StartOpret]=Maxdate)
return
            CALCULATE(COUNTROWS(SqlData),SqlData[Binary]=1,SqlData[Start+periode] <=Maxstart,SqlData[Start+periode]>=Minstart)
Fremskriv = DIVIDE([Andel1],[Andel2],1)

在满月的情况下,这将返回预期的结果:

https://i.imgur.com/XpcGq70.png

要绘制流失曲线,我需要计算几个月后仍然存在多少流失曲线。通过取“ Fremskriv”的所有先前值的乘积来尝试进行此操作。

Samlet_andel = 
VAR Maks = MAX(SqlData[antal_kor])
RETURN
CALCULATE(
    PRODUCTX(SUMMARIZE(
            SqlData,
            SqlData[antal_kor],
            "Prod", [Fremskriv]),
            [Prod]),
        ALLEXCEPT(SqlData,SqlData[antal_kor]),SqlData[antal_kor] <= Maks)

这声称该操作缺少内存,并且如果我仅计算给定用户流失月份的值,通常情况下它确实很慢。

我很茫然,所有帮助都感激不尽:)

提前谢谢

0 个答案:

没有答案