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

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
Syndicate_Admin
Administrator
Administrator

La medida YTD no se filtra correctamente

¡Hola expertos en Power BI!

Tengo una tabla de "Hechos" con columnas para [CustomerID], [OrderDate] y [Amount], y dos tablas de dimensiones, "Customer" y "Date", con relaciones de uno a varios con la tabla "Fact".

Quiero trazar el YTD actual contra todo el YTD anterior, por lo que también tengo una tabla 'UnconnectedDate' con una columna calculada CurrYear que me permite extraer los meses de esa tabla en el eje X con un filtro en el CurrYear.

Todo funciona bien con una excepción. Cuando agrego una segmentación de datos a la página para CustomerID, no se filtra correctamente el YTD. Los pedidos del cliente A para junio se han cargado en el modelo de datos, pero todavía estoy esperando los pedidos del cliente B para junio y solo tengo pedidos hasta mayo. Sin embargo, cuando filtro por cliente B, la medida YTD muestra un valor para junio de todos modos, lo que complica las cosas porque el valor es plano frente a mayo, ya que los datos de junio aún no están disponibles. Es fundamental que solucione esto, de lo contrario, mis informes hasta la fecha son simplemente basura.

Esta es mi medida:

YTD_Orders =
FUERON YTD_Months = DATESYTD(TREATAS(VALORES('unconnectedDates'[fecha]), 'connectedDates'[fecha]))
FUERON Res = CALCULAR(SUMA(«hecho»[importe]), YTD_Months)
DEVOLUCIÓN
Res

He intentado un montón de ideas diferentes sin éxito. Incluso hice una tabla de fechas que incluía una columna para CustomerID, pero tampoco funcionó.

Simplemente no puedo averiguar cómo hacer que mi medida devuelva valores solo a través de los meses para los que existen datos cuando se aplica un contexto de filtro.

¡Gracias de antemano por su ayuda!

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @WishAskedSooner ,

Gracias por su respuesta ,@Samarth_18 . Basándome en la descripción del problema, probé algunas soluciones. Pruebe con el siguiente código DAX:

YTD_Orders =
    VAR YTD_Months = DATESYTD(TREATAS(VALUES('UnconnectedDates'[Date]), 'ConnectedDates'[Date]))
    VAR ExistingMonths =
        CALCULATETABLE(
            VALUES('ConnectedDates'[Date]),
            'Fact'
        )
    VAR FilteredYTD_Months =
        FILTER(
            YTD_Months,
            'ConnectedDates'[Date] IN ExistingMonths
        )
    VAR Res = CALCULATE(SUM('Fact'[Amount]), FilteredYTD_Months)
RETURN
    Res

¡Pruébalo y avísame si resuelve tu problema! Si tiene alguna pregunta o necesita ajustes adicionales, proporciónenos la pbix de muestra después de eliminar los datos confidenciales para que podamos ayudarlo mejor a resolver su problema.

Saludos
Zhu
Equipo de apoyo a la comunidad

Si hay alguna publicación que ayude, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Si no entiendo sus necesidades o aún tiene problemas con él, no dude en hacérnoslo saber. ¡Muchas gracias!

Desafortunadamente, no puedo publicar una muestra de PBIX debido a restricciones de seguridad. Sin embargo, es bastante fácil recrear este problema. A continuación se muestra una tabla de datos de muestra que hice rápidamente en Excel y cargué en PBI:

WishAskedSooner_0-1721149832277.png

Y creó el siguiente modelo de datos:

WishAskedSooner_3-1721150105558.png

A continuación, creé las siguientes medidas basadas en lo que ya se ha publicado: OrigYTD, Samarth_YTD, Zhu_YTD. Y esto es lo que estoy recibiendo:

WishAskedSooner_4-1721150189968.png

Por lo tanto, ninguno de los métodos funciona correctamente. Espero que esto ayude a diagnosticar mi problema y generar una solución.

¡Gracias!

Hola @WishAskedSooner ,

Intenté crear yo mismo un dato de muestra basado en la descripción suya e implementé el resultado. Por favor, compruebe si hay algo que se pueda mejorar. Aquí está mi solución:

1.Crear datos simples:

vlinhuizhmsft_0-1721886641945.png

vlinhuizhmsft_1-1721886641946.png

vlinhuizhmsft_2-1721886689660.png

vlinhuizhmsft_3-1721886689661.png

La relación entre ellos es:

vlinhuizhmsft_0-1721887153156.png

2.Crear medidas:

PYTD1 = CALCULATE(
     SUM('Fact'[Amount]),
     SAMEPERIODLASTYEAR(TREATAS(VALUES(UnDimDate[Date]),'DimDate'[Date]))
)


PriorYTD=CALCULATE([PYTD1],FILTER(ALL('UnDimDate'),'UnDimDate'[Date<=SELECTEDVALUE(UnDimDate[Date])))

Con la siguiente medida, puede lograr un efecto acumulativo:

YTD_orders = 
VAR YTD_Orders1 = 
    VAR YTD_Months = DATESYTD(TREATAS(VALUES('UnDimDate'[Date]), 'DimDate'[Date]))
    VAR ExistingMonths =
        CALCULATETABLE(
            VALUES('DimDate'[Date]),
            'Fact'
        )
    VAR FilteredYTD_Months =
        FILTER(
            YTD_Months,
            'DimDate'[Date] IN ExistingMonths
        )
    VAR Res = CALCULATE(SUM('Fact'[Amount]), FilteredYTD_Months)
RETURN
    Res
VAR _day  =SELECTEDVALUE(UnDimDate[Date])
RETURN IF(CALCULATE(SUM('Fact'[Amount]),'Fact'[OrderDate]=_day)<>BLANK(),YTD_Orders1)

3. El resultado final es el siguiente:

vlinhuizhmsft_1-1721887317171.png

Saludos
Zhu
Equipo de apoyo a la comunidad

Si hay alguna publicación que ayude, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Si no entiendo sus necesidades o aún tiene problemas con él, no dude en hacérnoslo saber. ¡Muchas gracias!

En primer lugar, muchas gracias por sus dos respuestas. Siempre estoy agradecido por todas y cada una de las ideas. Y con ese espíritu, intenté implementar ambas soluciones.

Lamentablemente, Samart_18 no funcionó como se esperaba, pero no me sorprende demasiado porque el filtro de la página debería propagarse a través de la medida sin requerir una adición explícita de ese valor filtrado. Pero, ¿qué sé yo? Gracias, sin embargo.

La solución de Zhu me acerca. El valor de YTD ahora no se extiende más allá de los meses existentes para el cliente B. ¡Éxito! Estoy muy contento por eso. Sin embargo, en lugar de calcular la suma acumulada acumulada como antes, ahora solo devuelve la suma mensual. ¿Cómo podemos volver a la suma acumulada corriente?

A continuación se muestra una captura de pantalla de dónde estoy.

WishAskedSooner_0-1721137370081.png

¡Gracias!

Syndicate_Admin
Administrator
Administrator

Hola @WishAskedSooner ,

Puede intentar el siguiente código: -

YTD_Orders = 
VAR SelectedCustomer = SELECTEDVALUE('Customer'[CustomerID])

VAR YTD_Months = 
    DATESYTD(TREATAS(VALUES('UnconnectedDates'[Date]), 'ConnectedDates'[Date]))

VAR YTD_Orders_CustomerFiltered = 
    CALCULATE(
        SUM('Fact'[Amount]),
        'Customer'[CustomerID] = SelectedCustomer,
        YTD_Months
    )

RETURN
    YTD_Orders_CustomerFiltered

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

February Power BI Update Carousel

Power BI Monthly Update - February 2026

Check out the February 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.