#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)
Это приводит к нехватке памяти для операции и, как правило, очень медленно, если я вычисляю значение только для данного месяца оттока.
Я в недоумении, вся помощь приветствуется 🙂
Заранее благодарю