Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredGet Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
¡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:
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:
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!
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
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.
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
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"
)
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
Check out the October 2025 Power BI update to learn about new features.