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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
jcgutierro
Frequent Visitor

Recuperar el valor anterior, sin sumas u otros agregados

Buenas tardes, tengo una tabla con una serie de registros.

Codigo   Fecha       Estado

1101/01/20190
1201/01/20191
1305/01/20191
1105/01/20191
1415/01/20191
1120/01/20192
1231/01/20192
1331/01/20192

 

Con los datos de esta tabla, genero otra, tipo calendario en la que, por Código y Fecha, coloco su estado.

Por ejemplo, para el código 11:

- genero fechas entre el 1 y el 4 de enero con el Estado = 0

- genero fechas entre el 5 y el 19 de enero con el Estado = 1

- genero fechas entre el 20 y el 31 de enero con el Estado = 2

 

CódigoFechaEstado
1101/01/20190
1102/01/20190
1103/01/20190
1104/01/20190
1105/01/20191
1106/01/20191
1107/01/20191
1108/01/20191
1109/01/20191
1110/01/20191
1111/01/20191
1112/01/20191
1113/01/20191
1114/01/20191
1115/01/20191
1116/01/20191
1117/01/20191
1118/01/20191
1119/01/20191
1120/01/20192
1121/01/20192
1122/01/20192
1123/01/20192
1124/01/20192
1125/01/20192
1126/01/20192
1127/01/20192
1128/01/20192
1129/01/20192
1130/01/20192
1131/01/20192

 

He buscado y buscado y la solución siempre me lleva a utilizar EARLIER pero en los ejemplos siempre utilizan CALCULATE con alguna función de agregado (SUMX, MAXX, etc).  

Necesito recuperar el Estado anterior para un Código y Fecha, sin funciones de Agregado, mostrar directamente el valor que tenía en el registro anterior.

 

Me es urgente, ¿podeis decirme con algún ejemplo cómo he de hacerlo?

Muchas gracias

1 ACCEPTED SOLUTION

Hi @jcgutierro ,   My file

 

¡Ay! Mucho trabajo e ir por el camino equivocado. Por lo tanto, se trataba de encontrar la fecha del último espacio en blanco [St_ID] y luego usar eso para encontrar LastNonBlank [St_ID] porque aparentemente el orden en el que la función busca no será como esperamos que sea. Entonces, si usamos una fecha, sabemos cómo va eso. Reduje su conjunto de datos, pero traté de mantenerme fiel a los nombres. Es posible que deba agregar nuevamente en la prueba para el TKID, pero creo que esto lo resuelve.

 

Por favor hazme saber si tienes preguntas.

 

Si esto resuelve sus problemas, márquelo como la solución, para que otros puedan encontrarlo fácilmente. Los kudos también son agradables.
Nathaniel

 

 

 

 

 

 

 

LastNonBlank B = 
var LastNonBlankDate=CALCULATE(MAX(Cruzado[Fecha]),FILTER(ALL(Cruzado),Cruzado[Fecha]<=EARLIER(Cruzado[Fecha]) && Cruzado[St_ID]<>0))
var LastNonBlankSt_ID = CALCULATE(SUM(Cruzado[St_ID]),
	FILTER(ALL(Cruzado),Cruzado[Fecha]=LastNonBlankDate)
)

return
IF(Cruzado[St_ID]>0, Cruzado[St_ID],LastNonBlankSt_ID)

last non blank 1.PNG

 

Last non blank 2.PNG

 

 

 

 

 

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




View solution in original post

6 REPLIES 6
Nathaniel_C
Super User
Super User

Hi @jcgutierro ,

If you set it up using CALCULATE, it will need MAX on the column name, but that will return the value from just that one line.  You could use min and get the same value, as it is only looking at the one row.

 

If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos are nice too.
Nathaniel





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Gracias por tu preocupación.

Te muestro el DAX utilizado y que como verás no funciona bien, a partir del día 7 muestra un valor de 6 en vez de 5 (último valor correspondiente al día 7 )

Alguna solución?

Mil gracias.

---------------------

Columna 2 = 
var prevKind = CALCULATE(MAXX(Cruzado;Cruzado[St_Id]);
FILTER(Cruzado;Cruzado[Tk_Id]=EARLIER(Cruzado[Tk_Id]) && Cruzado[Fecha] <= EARLIER(Cruzado[FechaGenerada];1))) 
RETURN IF(Cruzado[St_Id]>0;Cruzado[St_Id];prevKind)


Captura.jpg

Hi @jcgutierro 

 

Todavía no lo he descubierto, pero si cambias MAXX a MINX, obtienes 1, así que eso me dice que no obtendrás el último, obtendrás el más grande. Y si solo dice = en lugar de <= no obtendrá nada porque no tiene nada en esa columna. En ST_ID reemplaza el 1 con un 7 y será más claro

 

Nathaniel

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Hi @jcgutierro ,   My file

 

¡Ay! Mucho trabajo e ir por el camino equivocado. Por lo tanto, se trataba de encontrar la fecha del último espacio en blanco [St_ID] y luego usar eso para encontrar LastNonBlank [St_ID] porque aparentemente el orden en el que la función busca no será como esperamos que sea. Entonces, si usamos una fecha, sabemos cómo va eso. Reduje su conjunto de datos, pero traté de mantenerme fiel a los nombres. Es posible que deba agregar nuevamente en la prueba para el TKID, pero creo que esto lo resuelve.

 

Por favor hazme saber si tienes preguntas.

 

Si esto resuelve sus problemas, márquelo como la solución, para que otros puedan encontrarlo fácilmente. Los kudos también son agradables.
Nathaniel

 

 

 

 

 

 

 

LastNonBlank B = 
var LastNonBlankDate=CALCULATE(MAX(Cruzado[Fecha]),FILTER(ALL(Cruzado),Cruzado[Fecha]<=EARLIER(Cruzado[Fecha]) && Cruzado[St_ID]<>0))
var LastNonBlankSt_ID = CALCULATE(SUM(Cruzado[St_ID]),
	FILTER(ALL(Cruzado),Cruzado[Fecha]=LastNonBlankDate)
)

return
IF(Cruzado[St_ID]>0, Cruzado[St_ID],LastNonBlankSt_ID)

last non blank 1.PNG

 

Last non blank 2.PNG

 

 

 

 

 

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Muchas gracias Nathaniel_C, funciona tal y como esperaba.

@jcgutierro ,

 

Aún trabajando en esto, mirar LASTNONBLANK () puede funcionar, ya que lo que está buscando no es el número máximo antes de este, sino el último valor en la columna ST_ID antes del primer espacio en blanco entre la celda que está mirando hacia arriba. ¿Si eso tiene algún sentido?

 

Avísame si vienes con algo.

 

Nathaniel





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.