Gorgo
Hola a todos,
estoy trabajando en un informe de power bi donde necesito multiplicar los valores de medida de «Tasa de pérdida de 3 años» basados en el año del índice en la matriz
a continuación se muestra la fórmula de la «Tasa de Pérdidas a 3 Años»:
Losses 3 Years Rate =
IFERROR(DIVIDE(
CALCULATE (
[Incurred Claims],
FILTER (
ALL( LineReport[Index Year],LineReport[UW Year]),
LineReport[Index Year] <= MAX ( LineReport[Index Year]) &&
LineReport[UW Year] >= MAX(LineReport[UW Year])-2 && LineReport[UW Year] <= MAX(LineReport[UW Year])
)
)
,
if( SELECTEDVALUE(LineReport[Index Year])=1,
CALCULATE(
[Incurred Claims],
FILTER (
ALL( LineReport[Index Year],LineReport[UW Year]),
LineReport[Index Year] <= MAX ( LineReport[Index Year]) &&
LineReport[UW Year] >= MAX(LineReport[UW Year])-2 && LineReport[UW Year] <= MAX(LineReport[UW Year])
)
),
CALCULATE (
[Incurred Claims],
FILTER (
ALL( LineReport[Index Year],LineReport[UW Year]),
LineReport[Index Year] <= MAX ( LineReport[Index Year])-1 &&
LineReport[UW Year] >= MAX(LineReport[UW Year])-2 && LineReport[UW Year] <= MAX(LineReport[UW Year])
)
)
),0)
se genera correctamente según la siguiente captura de pantalla:
ahora necesito calcular el factor de desarrollo, que es la «tasa de pérdidas de 3 años» para el año índice multiplicado por los demás, por ejemplo:
Fac. de desarrollo para el índice 1 = Tasa1 * tasa2*tasa3*tasa4*tasa5*tasa6*tasa7*tasa8 |
Dev Fac para el índice 2 = tasa2*tasa3*tasa4*tasa5*tasa6*tasa7*tasa8 |
Dev Fac para el índice 3 = tasa3*tasa4*tasa5*tasa6*tasa7*tasa8 |
Fac. de desarrollo para el índice 4 = tasa4*tasa5*tasa6*tasa7*tasa8 |
Fac. de desarrollo para el índice 5 = tasa5*tasa6*tasa7*tasa8 |
Fac. de desarrollo para el índice 6 = tasa6*tasa7*tasa8 |
Fac. de desarrollo para el índice 7 = tasa7*tasa8 |
Fac. de desarrollo para el índice 8 = tasa8 |
Estoy usando la siguiente fórmula:
Cape Cod IL 3 Years Rate =
var indexyear = SELECTEDVALUE(LineReport[Index Year])
return
EXP(
SUMX(
FILTER(ALL(LineReport), LineReport[Index Year]<=MAX(LineReport[Index Year]) &&
LineReport[Index Year]>= indexyear)
,
LN([Losses 3 Years Rate])
)
)
sin embargo, la matriz sigue cargando y arroja un error de memoria:
a continuación se muestra la fórmula que utilicé en Matrix Value:
Rate Calculation =
VAR Val =
SWITCH(SELECTEDVALUE('Chain Ladder'[Group]),
"Premium 3 Years",[Premium 3 Years Rate],
"Premium 5 Years",[Premium 5 Years Rate],
"Premium 7 Years",[Premium 7 Years Rate],
"Premium All Years",[Premium All Years Rate],
"Premium Average",[Premium Average Years Rate],
"Losses 3 Years", [Losses 3 Years Rate],
"Losses 5 Years",[Losses 5 Years Rate],
"Losses 7 Years",[Losses 7 Years Rate],
"Losses All Years",[Losses All Years Rate],
"Losses Average",[Losses Average Years Rate],
"Development Factor",'Cape Cod'[Cape Cod IL 3 Years Rate]
)
RETURN
FORMAT(Val, "0.00000")
Agradezco su ayuda ya que no puedo ir más lejos con esto.
Atentamente,
jorge
Alba
Hola @gorgo
¿Qué pasa con el código de [Incurred Claims]? ¿Te sería posible compartir el pbix?
Por favor marque la pregunta resuelta cuando termine y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo en privado para obtener asistencia con cualquier necesidad de BI a gran escala
Salud
Gorgo
En respuesta a Alba
Hola, las reclamaciones incurridas son una fórmula de suma simple:
Incurred Claims = SUM(LineReport[Paid Claims])+[Outstanding Claims]
Outstanding Claims = if (SELECTEDVALUE('Year Type'[Type])="FY",
CALCULATE(SUM(LineReport[OS Claims]),LineReport[Last OS Position FY]=1),
CALCULATE(SUM(LineReport[OS Claims]),LineReport[Last OS Position UW Year]=1))
Last OS Position FY = IF(AND([Max Period From FY]= LineReport[Premium Period From],[Max Transaction From FY]=LineReport[Transaction Date]),1,0)
Last OS Position UW Year = IF(LineReport[Statement Type]="Claim Statement" ,
IF(LineReport[Transaction Date]=[Max Transaction Date],1,0),
IF(AND([Max Period From]=LineReport[Premium Period From],[Max Transaction Date]=
LineReport [Transaction Date]),1,0))
estas son fórmulas involucradas.
tenga en cuenta que utilicé Reclamos incurridos en otras fórmulas y otras tablas, y se generó normalmente
Gracias
greg_deckler
@gorgo: primero, aprecie toda la información, pero será difícil solucionar este problema sin volver a crearlo y para eso necesitaría datos de muestra. Consulte esta publicación sobre cómo obtener una respuesta rápida a su pregunta: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490
Las partes más importantes son:
1. Muestre datos como texto, use la herramienta de tabla en la barra de edición
2. Salida esperada de datos de muestra
3. Explicación en palabras de cómo pasar del 1 al 2.
Dicho esto, es posible que pueda mejorar el rendimiento de sus medidas DAX. Por ejemplo, IFERROR es una función DAX costosa y no la necesita porque ya está usando DIVIDE, que tiene una verificación de errores incorporada como tercer parámetro opcional. Así que me desharía de eso.
Otros pensamientos, no incluye su fórmula para reclamos incurridos, por lo que puede haber optimizaciones allí. Además, ¿realmente necesita TODO o puede usar algo como ALLEXCEPT o algún otro filtro base, o quizás REMOVFILTERS? Es costoso comenzar con TODO, ya que consumirá mucha memoria al realizar el cálculo DAX.