cancel
Showing results for 
Search instead for 
Did you mean: 
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
Carousel_PBI_Wave1

2023 Release Wave 1 Plans

Power BI release plans for 2023 release wave 1 describes all new features releasing from April 2023 through September 2023.

Power BI Summit Carousel 2

Global Power BI Training

Make sure you register today for the Power BI Summit 2023. Don't miss all of the great sessions and speakers!

BizApps LATAM 2023

Business Application LATAM Summit 2023

Join the biggest FREE Business Applications Event in LATAM this February.

Power Platform Bootcamp

Global Power Platform Bootcamp

In this bootcamp we will deep-dive into Microsoft’s Power Platform stack with hands-on sessions and labs, delivered to you by experts and community leaders.

Top Solution Authors
Top Kudoed Authors