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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
BenArnold81
Frequent Visitor

Devolver datos de la fecha más cercana a la seleccionada en la segmentación de datos

Hola

¡Llevo dos días luchando con este problema y está empezando a enfermarme! Espero que alguien pueda ayudar.

Tengo foros de Excel mucho para encontrar respuestas, pero nunca escrito en ellos. Solo he estado aprendiendo Power BI durante una semana, pero este foro ya ha demostrado ser útil. Me disculpo de antemano si la forma en que expuse mi pregunta no es estándar o útil.

Trataré de explicar tan claramente como pueda lo que quiero.

Estoy produciendo un informe de rendimiento, alimentado por datos en una tabla ("Datos"), junto con una tabla de calendario ("Fechas"). Una de las medidas para las que estoy tratando de generar un objeto visual mostrará la proporción de la fuerza de trabajo que ha completado un curso determinado (en un gráfico de anillos). Esta referencia de medida es "CHM 0026". El valor de la proporción de empleados que han completado el curso se toma como una instantánea al día siguiente del final del trimestre financiero. Por ejemplo, los datos que cubren el período de octubre a diciembre de 2018 (o Q3 2018/19 utilizando nuestro calendario financiero) están listos para ser introducidos el 1 de enero de 2019. El siguiente cuadro muestra que el valor (o "real") para este indicador para este período fue del 54,32%.

RefPeríodoDatos adeudadosActual
CHM 0025Q1 2018/1901/07/20183.409544
CHM 0025Q2 2018/1901/10/20183.288903
CHM 0025Q3 2018/1901/01/20193.778834
CHM 0025Q4 2018/1901/04/20194.631608
CHM 0025Q1 2019/2001/07/20196.01
CHM 0025Q2 2019/2001/10/20195.807486
CHM 0025Q3 2019/2001/01/20204.088203
CHM 0025Q4 2019/2001/04/2020
CHM 0025Q1 2020/2101/07/2020
CHM 0025Q2 2020/2101/10/2020
CHM 0025Q3 2020/2101/01/2021
CHM 0025Q4 2020/2101/04/2021
CHM 0025Q1 2021/2201/07/2021
CHM 0025Q2 2021/2201/10/2021
CHM 0025Q3 2021/2201/01/2022
CHM 0025Q4 2021/2201/04/2022
CHM 0025Q1 2022/2301/07/2022
CHM 0025Q2 2022/2301/10/2022
CHM 0025Q3 2022/2301/01/2023
CHM 0025Q4 2022/2301/04/2023
CHM 0026Q1 2018/1901/07/201813.75
CHM 0026Q2 2018/1901/10/201834.5
CHM 0026Q3 2018/1901/01/201954.32099
CHM 0026Q4 2018/1901/04/201954.11765
CHM 0026Q1 2019/2001/07/201930.55556
CHM 0026Q2 2019/2001/10/201970.83333
CHM 0026Q3 2019/2001/01/202073.52941
CHM 0026Q4 2019/2001/04/2020
CHM 0026Q1 2020/2101/07/2020
CHM 0026Q2 2020/2101/10/2020
CHM 0026Q3 2020/2101/01/2021
CHM 0026Q4 2020/2101/04/2021
CHM 0026Q1 2021/2201/07/2021
CHM 0026Q2 2021/2201/10/2021
CHM 0026Q3 2021/2201/01/2022
CHM 0026Q4 2021/2201/04/2022
CHM 0026Q1 2022/2301/07/2022
CHM 0026Q2 2022/2301/10/2022
CHM 0026Q3 2022/2301/01/2023
CHM 0026Q4 2022/2301/04/2023

Necesito poder dar al usuario la opción de elaborar un informe que refleje la situación en una fecha determinada, para que puedan producir retrospectivamente un informe para hace tres meses, hace un año, etc. No quiero hacer esto en filtros, ya que se bloquearán, así que estoy usando una segmentación de datos con una opción "antes" para actuar como un selector de fecha, vinculado a mi tabla de calendario, que está vinculada a la columna "Datos adeudados" en la tabla anterior.

He usado una medida para tratar de producir esto:

MostRecentDate (MostRecentDate)
Var SlicerDate (Var SlicerDate)Max(Fechas[Día])
devolución
calculate(MAX(Data[Data due]),filter(all(Data[Data due]),Data[Data due]<-SlicerDate),filter(data,Data[Ref]-"CHM 0026"))
Esto parece funcionar, ya que poner el resultado en una tarjeta muestra 01,01,2019.
Mi siguiente tarea es extraer la cifra real para esa fecha para la referencia en cuestión. Para esto, he utilizado otra medida:
MostRecentActual ?
calculate(SUM(Data[Actual]),filter(Data,Data[Data due]-[MostRecentDate]),FILTER(Data,Data[Ref]-"CHM 0026"))
Esperaba que esto me diera el valor único, ya que sólo hay una fila que cumple los dos criterios, pero en su lugar me da la suma de las tres fechas para la referencia que están en o antes de 01,01,2019, que es 102.57.
He estado mirando esto durante tanto tiempo que ahora estoy completamente perdido y necesito un segundo o tercer par de ojos.
Muchas gracias.
Ben
1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@BenArnold81 , Pruebe una medida como

MostRecentActual ?
VAR SlicerDate (MaxX(selectedvalues(Dates), Dates[Day])
devolución
calculate(lastnonblankvalue(Data[Data due], SUM(Data[Real])),filter(Data,Data[Data due]<-SlicerDate && Data[Ref]-"CHM 0026"))

O

MostRecentActual ?
VAR SlicerDate (MaxX(selectedvalues(Dates), Dates[Day])
devolución
calculate(lastnonblankvalue(Data[Data due], SUM(Data[Actual])),filter(all(Data),Data[Data due]<-SlicerDate && Data[Ref]-"CHM 0026"))

Le sugiero que utilice la tabla de fechas, ya que va a considerar cada debajo de la fecha seleccionada, podría forzar a usar todo y, en ese caso, terminará usando todo en los datos.

View solution in original post

4 REPLIES 4
amitchandak
Super User
Super User

@BenArnold81 , Pruebe una medida como

MostRecentActual ?
VAR SlicerDate (MaxX(selectedvalues(Dates), Dates[Day])
devolución
calculate(lastnonblankvalue(Data[Data due], SUM(Data[Real])),filter(Data,Data[Data due]<-SlicerDate && Data[Ref]-"CHM 0026"))

O

MostRecentActual ?
VAR SlicerDate (MaxX(selectedvalues(Dates), Dates[Day])
devolución
calculate(lastnonblankvalue(Data[Data due], SUM(Data[Actual])),filter(all(Data),Data[Data due]<-SlicerDate && Data[Ref]-"CHM 0026"))

Le sugiero que utilice la tabla de fechas, ya que va a considerar cada debajo de la fecha seleccionada, podría forzar a usar todo y, en ese caso, terminará usando todo en los datos.

@amitchandra Podrías ser un genio.

No he entendido completamente lo que has hecho todavía y no pude hacer eactly lo que dijiste - no me dejaría hacer MaxX(selectedvalues.... no estoy seguro de por qué.

En este momento, tengo esto y parece estar funcionando para esta medida:

MostRecentActual ?
VAR SlicerDate á MaxX(Dates,Dates[Day])
devolución
CALCULATE(LASTNONBLANKVALUE(Data[Data due],SUM(Data[Real])),filter(Data,Data[Data due]<-SlicerDate && Data[Ref]-"CHM 0026"))
¿Qué está haciendo el "Lastnonblankvalue" en esta medida? ¿Funciona porque las fechas en "Datos adeudados" se enumeran cronológicamente?
Te haré saber cómo me pongo una vez que lo haya probado en algunas cosas diferentes.
Gracias de nuevo.
Ben
Greg_Deckler
Super User
Super User

@BenArnold81: tendrá que escribir una medida en la que utilice SELECTEDVALUE para obtener el valor de segmentación de datos y, a continuación, utilice ALL para invalidar el contexto de filtro y encontrar el valor "cerca" que desee. Esto podría ser una situación de Selector complejo. https://community.powerbi.com/t5/Quick-Measures-Gallery/The-Complex-Selector/m-p/1116633#M534


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler Muchas gracias por responder. ¿Es capaz de dar más detalles sobre cómo encajarían las funciones que sugiere? Puede que ya tenga una solución para esto, pero estoy tratando de aprender todo lo que puedo, así que realmente recibiría alternativas.

Muchas gracias

Ben

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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