Как избежать превышения потолка памяти при расчете кривой оттока?

#powerbi #dax

#powerbi #dax

Вопрос:

Я рассчитываю кривую оттока для данных за 24 месяца. Данная строка представляет одного пользователя с одним продуктом в течение одного месяца их членства.

Например, если у пользователя был продукт в течение 12 месяцев, он отвечает за 12 строк с метками от 0 до 11.

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

Это вычисляется следующим образом:

 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)
  

Это приводит к нехватке памяти для операции и, как правило, очень медленно, если я вычисляю значение только для данного месяца оттока.

Я в недоумении, вся помощь приветствуется 🙂

Заранее благодарю