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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Syndicate_Admin
Administrator
Administrator

Filtrar datos en función de los valores de las columnas

¡Hola!
Tengo una tabla de fechas que obtiene el valor de fecha más bajo y más alto de otra tabla con datos financieros y luego crea una fila por fecha única en el intervalo MIN/MAX dado. Entre otras columnas, he calculado columnas, por ejemplo, Month-to-Date, que da el valor "MTD" en la columna llamada MTD (por lo que todas las fechas del mes actual tienen el valor "MTD"). Por el momento también hay columnas para QTD y YTD. La columna calculada MTD tiene el siguiente aspecto:

MTD =
SI( AÑO(HOY()) = Libro mayor de fechas[Año] && MES(HOY()) = Libro mayor de fechas[Número de mes] && HOY() >= Libro mayor de fechas[Fecha],"MTD")



También tiene medidas (en caso de que sean más fáciles de usar que se refieran a los valores de las columnas), MTD como ejemplo:

DateMsr_MTD =
FECHAS INTERMEDIAS(
'Libro mayor de fechas'[Fecha],
MIN(Libro mayor de fechas[MTD]),
MÁXIMO(Libro mayor de fechas[MTD])
)


Mi objetivo es tener un segmentador con ciertos intervalos de fechas predefinidos, como MTD, YTD, etc. No quiero calcular nada, simplemente quiero intervalos de fechas predefinidos que se actualicen automáticamente una vez que lleguemos a un nuevo mes, etc. He intentado construirlo con medidas y también parámetros, con la esperanza de tener fácilmente varios lapsos de tiempo en los que los usuarios puedan hacer clic en lugar de seleccionar manualmente las fechas deseadas. Lo único que logré hacer funcionar es tomar una de las columnas calculadas y arrastrarla a un cortador, que luego filtra los datos como debería.

Nota: No tengo acceso directo a los datos, ya que no puedo abrir de ninguna manera la consulta de energía, por lo que debe resolverse con DAX o la funcionalidad básica de Power BI Desktop. Esto probablemente sea muy fácil de resolver, sin embargo, después de muchas horas de fracaso, espero que alguien aquí pueda ayudarme 🙂

¡Gracias de antemano!

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

@Niikk

Agregar una columna calculada para intervalos de fechas

DateSpan =
SWITCH(
TRUE(),
YEAR(TODAY()) = DateLedger[Year] && MONTH(TODAY()) = DateLedger[Month Number] && TODAY() >= DateLedger[Date], "MTD",
YEAR(TODAY()) = DateLedger[Year] && QUARTER(TODAY()) = DateLedger[Quarter] && TODAY() >= DateLedger[Date], "QTD",
YEAR(TODAY()) = DateLedger[Year] && TODAY() >= DateLedger[Date], "YTD",
"Other"
)

Agregue la columna DateSpan a la segmentación.
La segmentación mostrará "MTD", "QTD", "YTD" y "Other". Los usuarios pueden seleccionar uno de estos intervalos.

💌 Si esto ayudó, ¡una marca de Kudos 👍 o Solution sería genial! 🎉
Bien
Kedar
Conéctate en LinkedIn

Syndicate_Admin
Administrator
Administrator

Solo por diversión, probé a construir una tabla por período de tiempo, por lo que cada día en ese período de tiempo obtiene una fila propia en una tabla, por ejemplo, D_MTD se ve así:
D_MTD =
CALCULATETABLE(
SELECTCOLUMNS(DateLedger, "Dates", [Date], "Period", "MTD", "SortOrder", "1"),
YEAR(TODAY()) = DateLedger[Año], MONTH(TODAY()) = DateLedger[Número de mes], TODAY() >= DateLedger[Date]
)

Luego hizo uno para QTD también y luego los juntó a ambos como una mesa por una simple Unión. Luego configuré una relación de la tabla de fechas combinadas a DateLedger y ahora funciona como debería. Pero, ahora la jerarquía de fechas se pierde en lugar de DateLedger, lo que rompe muchos de los informes existentes. ¿Es la mejor manera de avanzar que D_Span (la tabla de unión) establezca la jerarquía en gráficos, etc., o hay una manera de reconstruir manualmente la jerarquía en DateLedger?

Se agradece cualquier reenvío de solución, siempre y cuando obtenga intervalos de fechas estáticos que se puedan seleccionar fácilmente para los usuarios y el filtrado de fechas de los datos financieros aún funcione 🙂


Hola @Niikk ,

Hasta donde yo sé, si crea una columna calculada, no podría mostrar varios resultados YTD/MTD/QTD al mismo tiempo.

Aquí le sugiero que cree una tabla de período para la segmentación y luego cree una medida para filtrar el objeto visual de la tabla.

Selection = 
DATATABLE(
    "Selection",STRING,
    "Order",INTEGER,
    {
        {"MTD",1},
        {"QTD",2},
        {"YTD",3}
    })

Medir:

Filter Measure = 
SWITCH (
    SELECTEDVALUE ( Selection[Order] ),
    1,
        IF (
            YEAR ( TODAY () ) = MAX ( DateLedger[Year] )
                && MONTH ( TODAY () ) = MAX ( DateLedger[Month Number] ),
            1,
            0
        ),
    2,
        IF (
            YEAR ( TODAY () ) = MAX ( DateLedger[Year] )
                && QUARTER ( TODAY () ) = MAX ( DateLedger[Quarter Number] ),
            1,
            0
        ),
    3, IF ( YEAR ( TODAY () ) = MAX ( DateLedger[Year] ), 1, 0 ),
    1
)

El resultado es el siguiente.

vrzhoumsft_0-1734685879049.png

vrzhoumsft_2-1734685896973.png

vrzhoumsft_1-1734685887527.png

Saludos
Rico Zhou

Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Esto es casi idéntico a la solución con la que terminé. Tengo mis diferentes rangos de fechas en medidas (uno para la fecha de inicio y otro para la fecha de finalización) y luego lo filtro a través de una segmentación 🙂 de tabla de períodos

Syndicate_Admin
Administrator
Administrator

Hola @Niikk ,

Cree una nueva columna calculada en la tabla DateLedger con este DAX:

Date Span = 
SWITCH(
    TRUE(),
    YEAR(TODAY()) = DateLedger[Year] && MONTH(TODAY()) = DateLedger[Month Number], "MTD",
    YEAR(TODAY()) = DateLedger[Year], "YTD",
    QUARTER(TODAY()) = DateLedger[Quarter], "QTD",
    "All Time"
)

Utilice esta columna directamente en la segmentación. Se actualizará dinámicamente en función de la fecha de hoy.

¡Gracias por la rápida respuesta! Esto funciona muy bien para MTD, pero no para las otras opciones ya que si filtro por YTD obtengo datos desde 2024-01-01 hasta 2024-09-30, desde 2024-10-01 hasta 2024-11-30 están marcados como QTD y diciembre está marcado como YTD.

Gracias, acabo de hacer algunos cambios aquí, pruebe este DAX actualizado:

Date Span = 
VAR TodayDate = TODAY()
VAR CurrentYear = YEAR(TodayDate)
VAR CurrentMonth = MONTH(TodayDate)
VAR CurrentQuarter = QUARTER(TodayDate)
VAR CurrentDay = DAY(TodayDate)

RETURN
SWITCH(
    TRUE(),
    -- MTD: Current month, from the first of the month to today
    YEAR(TodayDate) = DateLedger[Year] && MONTH(TodayDate) = DateLedger[Month Number], "MTD",
    
    -- YTD: All dates from the beginning of the current year to today
    YEAR(TodayDate) = DateLedger[Year] && DateLedger[Date] <= TodayDate, "YTD",
    
    -- QTD: All dates in the current quarter, from the first day of the quarter to today
    YEAR(TodayDate) = DateLedger[Year] && QUARTER(TodayDate) = DateLedger[Quarter] && DateLedger[Date] <= TodayDate, "QTD",
    
    -- All Time: Any date that doesn't fall into MTD, YTD, or QTD
    "All Time"
)

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 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.