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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo restar 3 meses de una fecha, luego encontrar la fecha más cercana posible de una segmentación de datos.

Hola

Actualmente tengo una lista de fechas en una rebanadora en una sola selección:

  • Fecha de hoy (Ej: 2 de mayo de 2022)
  • 29 abril 2022
  • 31 marzo 2022
  • 28 febrero 2022
  • 31 Enero 2022
  • 31 Dic 2021
  • 30 Noviembre 2021
  • 29 octubre 2021
  • 30 septiembre 2021
  • Hasta 2011.

La lista consta de la fecha de hoy y la fecha de fin de mes. Sin embargo, en los meses que terminan en un fin de semana, tendrá la fecha el viernes en lugar del fin de semana. Ejemplo: abril de 2022, termina el 30 de abril de 2022, pero la lista tiene 29 de abril de 2022.

Lo que estoy tratando de hacer es cuando se elige una fecha en la rebanadora, quiero restar 3 meses de esa fecha y encontrar la fecha más cercana posible (esto es necesario debido a que algunas fechas terminan el viernes en lugar del fin de semana).

¿Alguien tiene alguna idea de cómo puedo hacer esto?

Conjunto de datos de ejemplo: https://drive.google.com/file/d/1sy5naT4OTcBUd9fcLJJG7KaFxXgSdPUB/view?usp=sharing

¡Gracias por su ayuda!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola @Deermeat ,

Creo que el método de ganancia rápida más fácil es agregar un rango a su tabla de segmentación de datos:

DateRank = RANKX(FILTER(Slicer, [Date] < EARLIER([Date])), [Date],,ASC)

hnguy71_0-1651281428230.png

Luego, en una medida, solo pediría devolver el rango y restar por 3:

DateMinusThree = 
VAR _SelectedRank = SELECTEDVALUE(Slicer[DateRank], MAX(Slicer[DateRank]))
VAR _EvalRank = _SelectedRank - 3
VAR _GetRank = IF(_EvalRank < 1, 1, _EvalRank)
VAR _GetDate = CALCULATE(MAX(Slicer[Date]), Slicer[DateRank] = _GetRank, REMOVEFILTERS(Slicer))

RETURN

_GetDate

hnguy71_1-1651281650215.png

hnguy71_2-1651281670842.png

View solution in original post

13 REPLIES 13
Syndicate_Admin
Administrator
Administrator

Hola @Deermeat ,

Creo que el método de ganancia rápida más fácil es agregar un rango a su tabla de segmentación de datos:

DateRank = RANKX(FILTER(Slicer, [Date] < EARLIER([Date])), [Date],,ASC)

hnguy71_0-1651281428230.png

Luego, en una medida, solo pediría devolver el rango y restar por 3:

DateMinusThree = 
VAR _SelectedRank = SELECTEDVALUE(Slicer[DateRank], MAX(Slicer[DateRank]))
VAR _EvalRank = _SelectedRank - 3
VAR _GetRank = IF(_EvalRank < 1, 1, _EvalRank)
VAR _GetDate = CALCULATE(MAX(Slicer[Date]), Slicer[DateRank] = _GetRank, REMOVEFILTERS(Slicer))

RETURN

_GetDate

hnguy71_1-1651281650215.png

hnguy71_2-1651281670842.png

@hnguy71

Gracias por la respuesta. ¿Podría saber qué es exactamente una tabla de segmentación de datos y cómo se puede crear? ¿Mi cortadora está sola sin mesa? Se genera a partir de una columna en mi tabla de datos original, ¿verdad?

Hay @Deermeat ,

Eso es algo correcto. Es principalmente una tabla desconectada que posiblemente contiene todas sus fechas de una o varias tablas.


SlicerTbl = 
VAR _Dates = DISTINCT(FactTable[Date]) // Substitute this for your dates from fact table.

RETURN

GENERATE( 
    _Dates,
    ROW("RankDate", RANKX(FILTER(_Dates, [Date] < EARLIER([Date])), [Date],,ASC))
)

hnguy71_0-1651283139380.png

En ella @hnguy71,

Muchas gracias. Entiendo cómo hacer que la tabla independiente funcione, sin embargo, cuando utilicé la fórmula de medida después de adaptarla a mi informe. Sigue mostrando la misma fecha sin cambios.

1.png

¿Sabes por qué este podría ser el caso?

@Deermeat , tendría que proporcionar una muestra. No puedo decir de inmediato cuál puede ser el problema.

@Deermeat ,

Veo el problema. Está utilizando la fecha de la tabla Sheet1. En su lugar, su fecha debe ser de SlicerTbl.

@hnguy71,

Lo sentimos, ¿qué parte utilicé la Fecha de Sheet1? El código que utilicé para DateMinusThree está usando SlicerTbl Date:

DateMinusThree = 
VAR _SelectedRank = SELECTEDVALUE(SlicerTbl[RankDate], MAX(SlicerTbl[RankDate]))
VAR _EvalRank = _SelectedRank - 3
VAR _GetRank = IF(_EvalRank < 1, 1, _EvalRank)
VAR _GetDate = CALCULATE(MAX(SlicerTbl[Date]), SlicerTbl[RankDate] = _GetRank, REMOVEFILTERS(SlicerTbl))

RETURN
_GetDate

@Deermeat ,

En el objeto visual de la segmentación de datos, está utilizando la fecha de Sheet1. Debe reemplazar el campo de su objeto visual por el campo SlicerTbl[Date].

@hnguy71,

Omg, funciona ahora. ¡Muchas gracias por su ayuda!

@hnguy71,

Permítame hacerle una última pregunta. Cuando configuré la segmentación de datos para usar la fecha de SlicerTbl, rompió el gráfico que está a la derecha. Ya no puede ser filtrado por la cortadora. ¿Sabes cómo se puede arreglar esto?

Deermeat_0-1651287170734.png

Nuevos datos: https://drive.google.com/file/d/12k-dHYN0YcgeRs1DkpqbVDAGcHT-iZTJ/view?usp=sharing

@Deermeat , parece estar funcionando. ¿Podría describirme el problema?

@hnguy71,

El gráfico de la izquierda muestra demasiados puntos. Muestra todos los puntos posibles en los datos de 1 año, en lugar de de acuerdo con la segmentación de datos. La segmentación de datos con Fecha de SlicerTbl permite que la medida 3MthsAgo Average Score funcione, pero no filtra el gráfico. La segmentación de datos con Fecha de hoja1 permite filtrar el gráfico, pero no funciona para la medida.

He logrado 'arreglar' esto sincronizando las dos rebanadoras juntas y ocultando una de ellas. Un poco tonto, pero funciona ahora.

¡Gracias por su ayuda!

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Top Solution Authors
Top Kudoed Authors