Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Hola a todos
Tengo una matriz de Tasa Promedio de Balanceo (abajo a la izquierda), debería haber un valor en la celda C a D60. Pero está vacío.
Medidas relacionadas con el DAX:
Average Roll Rate =
VAR PeriodM = SELECTEDVALUE( slt_period[Months], 3 )
VAR MaxDate = MAX( rollrate[asofdate] )
VAR DateRange =
CALCULATETABLE(
DATESINPERIOD(
rollrate[asofdate],
MaxDate,
- PeriodM,
MONTH
),
ALL( rollrate[asofdate] )
)
VAR Numerator =
CALCULATE(
[Selected Roll Measure],
DateRange
)
VAR Denominator =
CALCULATE(
[Base Roll Measure],
DateRange
)
RETURN
DIVIDE( Numerator, Denominator )
slt_period =
DATATABLE(
"Months", INTEGER,
{
{ 3 },
{ 6 },
{ 12 }
}
)
Selected Roll Measure =
SWITCH(
SELECTEDVALUE( slt_rollrate[Metric], "UPB" ),
"OBS", [OBS],
"UPB", [UPB]
)
UPB =
VAR FromStatus = SELECTEDVALUE(rollrate[delinq], "ALL")
VAR ToStatus = SELECTEDVALUE(rollrate[next_delinq], "ALL")
VAR Result =
SUMX(
FILTER(
ALLSELECTED(rollrate),
(rollrate[delinq] =
FromStatus && rollrate[next_delinq] = ToStatus
|| FromStatus = "ALL" && rollrate[next_delinq] = ToStatus
|| ToStatus = "ALL" && rollrate[delinq] = FromStatus
)
),
rollrate[balance]
)
RETURN
IF(
HASONEVALUE(rollrate[delinq]) && HASONEVALUE(rollrate[next_delinq]),
Result,
SUMX(
FILTER(
ALLSELECTED(rollrate),
(FromStatus =
"ALL" && rollrate[next_delinq] = ToStatus
|| ToStatus = "ALL" && rollrate[delinq] = FromStatus
)
),
rollrate[balance]
)
)
OBS =
VAR FromStatus = SELECTEDVALUE(rollrate[delinq], "ALL")
VAR ToStatus = SELECTEDVALUE(rollrate[next_delinq], "ALL")
VAR Result =
COUNTX(
FILTER(
ALLSELECTED(rollrate),
(rollrate[delinq] =
FromStatus && rollrate[next_delinq] = ToStatus
|| FromStatus = "ALL" && rollrate[next_delinq] = ToStatus
|| ToStatus = "ALL" && rollrate[delinq] = FromStatus
)
),
rollrate[loanid]
)
RETURN
IF(
HASONEVALUE(rollrate[delinq]) && HASONEVALUE(rollrate[next_delinq]),
Result,
COUNTX(
FILTER(
ALLSELECTED(rollrate),
(FromStatus =
"ALL" && rollrate[next_delinq] = ToStatus
|| ToStatus = "ALL" && rollrate[delinq] = FromStatus
)
),
rollrate[loanid]
)
)
Base Roll Measure =
VAR FromStatus = SELECTEDVALUE( rollrate[delinq], "ALL" )
RETURN
SWITCH(
SELECTEDVALUE( slt_rollrate[Metric], "UPB" ),
"UPB",
CALCULATE(
SUM( rollrate[balance] ),
FILTER(
ALLSELECTED( rollrate ),
rollrate[delinq] = FromStatus
|| FromStatus = "ALL"
)
),
"OBS",
CALCULATE(
COUNTROWS(
FILTER(
ALLSELECTED( rollrate ),
rollrate[delinq] = FromStatus
|| FromStatus = "ALL"
)
)
)
)
Esta es mi relación:
from[prevdelinq] -> rollrate[delinq]
to[delinq] -> rollrate[next_delinq]
El campo row de la matriz se rellena con from[prevdelinq]
El campo de columna en la matriz se rellena con to[delinq]
El campo value de la matriz se rellena con la medida de la tasa media de rodadura
Como puede ver, hay algunos segmentadores externos: asofdate, trust, pool, deal, servicer y period para elegir.
Para la tasa de balanceo promedio, el algoritmo es SUM (balance cuando delinq = "C" y next_delinq = "D60") / SUM (saldo cuando delinq = "C").
En mi fuente de datos, verifiqué que C a D60 tiene una proporción:
select
sum(balance)
from ptan.rollrate
where asofdate between '20240531' and '20250430'
and delinq = 'C'
and next_delinq = 'D60';
-- 2129785.8699999996
select
sum(balance)
from ptan.rollrate
where asofdate between '20240531' and '20250430'
and delinq = 'C';
-- 8601604221.530008
select 2129785.8699999996 / 8601604221.530008 * 100;
-- 0.0247603332488700
Pero cuando elijo Fecha como 30/04/2025 y Período es 12, no hay C a D60 en la matriz.
Lo extraño es cuando elijo varias fechas en la segmentación de fechas desde el 31/05/2024 hasta el 30/04/2025. La Matriz de Velocidad de Balanceo puede mostrar el resultado correcto:
El campo de valor de la matriz de velocidad de rodadura se rellena con esta medida:
Selected Value =
SWITCH(
SELECTEDVALUE( slt_rollrate[Metric] ),
"UPB", msr_rollrate[UPB],
"OBS", msr_rollrate[OBS],
BLANK()
)
Este problema me vuelve loco. No sabía en qué me había equivocado. 😭
Hola danielsun,
Gracias por su consulta a través del foro de la comunidad de Microsoft Fabric.
Se adjunta la captura de pantalla y el archivo PBIX, que pueden ayudar a resolver el problema:
Si encuentra útil nuestra respuesta, considere amablemente marcarla como la solución aceptada y felicitarla. Esto ayudará a otros miembros de la comunidad que puedan estar enfrentando consultas similares.
Si tiene más preguntas, no dude en ponerse en contacto con la comunidad de Microsoft Fabric.
Gracias.
Aprecia lo que tu trabajo extra. Lo intentaré, luego volveré para contarles el resultado más tarde cuando esté disponible.
Tengo mucha curiosidad por saber qué le pasaba a mi antiguo DAX, ¿cómo puede funcionar tan bien su DAX? ¿Puedo saber la razón? Porque solo soy un principiante con Power BI.
Realmente lo aprecio. Eso funciona.
Por cierto, la razón por la que uso tablas de dimensiones de from y es para asegurarme de que todavía haya filas y columnas para mostrar, incluso si la tabla de hechos de rollrate no tiene VOL PPM o DEFAULT. Pero vi que también usas esa forma y funciona perfectamente. Muchas gracias, mi JEFE. LOL
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.