Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Buenas tardes, tengo una tabla con una serie de registros.
Codigo Fecha Estado
11 | 01/01/2019 | 0 |
12 | 01/01/2019 | 1 |
13 | 05/01/2019 | 1 |
11 | 05/01/2019 | 1 |
14 | 15/01/2019 | 1 |
11 | 20/01/2019 | 2 |
12 | 31/01/2019 | 2 |
13 | 31/01/2019 | 2 |
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ódigo | Fecha | Estado |
11 | 01/01/2019 | 0 |
11 | 02/01/2019 | 0 |
11 | 03/01/2019 | 0 |
11 | 04/01/2019 | 0 |
11 | 05/01/2019 | 1 |
11 | 06/01/2019 | 1 |
11 | 07/01/2019 | 1 |
11 | 08/01/2019 | 1 |
11 | 09/01/2019 | 1 |
11 | 10/01/2019 | 1 |
11 | 11/01/2019 | 1 |
11 | 12/01/2019 | 1 |
11 | 13/01/2019 | 1 |
11 | 14/01/2019 | 1 |
11 | 15/01/2019 | 1 |
11 | 16/01/2019 | 1 |
11 | 17/01/2019 | 1 |
11 | 18/01/2019 | 1 |
11 | 19/01/2019 | 1 |
11 | 20/01/2019 | 2 |
11 | 21/01/2019 | 2 |
11 | 22/01/2019 | 2 |
11 | 23/01/2019 | 2 |
11 | 24/01/2019 | 2 |
11 | 25/01/2019 | 2 |
11 | 26/01/2019 | 2 |
11 | 27/01/2019 | 2 |
11 | 28/01/2019 | 2 |
11 | 29/01/2019 | 2 |
11 | 30/01/2019 | 2 |
11 | 31/01/2019 | 2 |
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
Solved! Go to 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)
Proud to be a 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
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)
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
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)
Proud to be a Super User!
Muchas gracias Nathaniel_C, funciona tal y como esperaba.
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
Proud to be a Super User!
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
25 | |
18 | |
18 | |
17 | |
16 |
User | Count |
---|---|
28 | |
27 | |
19 | |
15 | |
14 |