Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

¿Por qué mi medida no puede filtrar todas las combinaciones en la matriz de transición?

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.

danielsun_0-1747058968186.png

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:

danielsun_1-1747059610827.png

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:

danielsun_2-1747060027076.png

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. 😭

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

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:

vpnarojumsft_0-1747125007050.png

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

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors