Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
walter_hardy
Contributor III
Contributor III

Stock a la fecha

Hola a todos. Estoy haciendo un informe acerca del stock de los productos.

En una tabla muestro el listado de los productos y su respectivo stock actual con la siguiente expresión:

sum( { <fecha={"<=$(=max(date(fecha)))"}> }   stock)

De ésta manera, el usuario debe seleccionar una fecha para saber qué stock tenía cada producto hasta la fecha seleccionada (fecha de corte). Ésto funciona bien.

  Ahora lo que quiero armar es un resumen del stock por fecha. Es decir, en una tabla mostrar la fecha (del 1 al 31, o 30) y el total del stock a esa fecha. Ésto con la posibilidad de que el usuario pueda seleccionar el año y la fecha que quiere ver.

Con la misma expresión me devuelve el movimiento de stock de esas fechas aisladas no más, sin acumularse.

Captura.PNG

1 Solution

Accepted Solutions
juliocodesal
Contributor III
Contributor III

Hola,

Esta función muestra el Stock independientemente de la fecha que selecciones o el orden de la tabla:

sum({<fecha=>} Aggr({<fecha=>} rangeSum(above(total sum({<fecha=>}valor), 0, RowNo(total))), (fecha, (numeric, ascending))))

Faltaría hacerla independiente del mes y el año. Para eso en el scrip de carga añade

month(fecha) as mes,

year(fecha) as año,

Luego sustituye en la formula donde pone {<fecha=>} por {<fecha=, mes=, año=>}

Creo que así funcionará, yo no puedo cambiar el scrip porque luego no cargo los datos.

8de8b151f1b24169819e827db3038ede.png

View solution in original post

17 Replies
juliocodesal
Contributor III
Contributor III

Hola, el problema puede ser que en la nueva tabla has añadido la dimensión fecha entonces te calcula cada fila solo para esa fecha.

walter_hardy
Contributor III
Contributor III
Author

Hola Julio. Si, eso es lo que está haciendo. Lo que necesito es que me muestre el stock acumulado a la fecha de esa dimensión.  Por ejemplo, el stock al 05/09 en una fila, el stock al 07/09 en otra, etc. ¿Cómo lo puedo lograr?

juliocodesal
Contributor III
Contributor III

¿No sería una suma acumulada lo que buscas? Sin un ejemplo es deficil pensar una fórmula.

walter_hardy
Contributor III
Contributor III
Author

Julio disculpa por no ser claro. Voy a tratar de explicarlo mejor con un ejemplo con un .qvf que adjunto. Gracias.

juliocodesal
Contributor III
Contributor III

Hola,

Esta función muestra el Stock independientemente de la fecha que selecciones o el orden de la tabla:

sum({<fecha=>} Aggr({<fecha=>} rangeSum(above(total sum({<fecha=>}valor), 0, RowNo(total))), (fecha, (numeric, ascending))))

Faltaría hacerla independiente del mes y el año. Para eso en el scrip de carga añade

month(fecha) as mes,

year(fecha) as año,

Luego sustituye en la formula donde pone {<fecha=>} por {<fecha=, mes=, año=>}

Creo que así funcionará, yo no puedo cambiar el scrip porque luego no cargo los datos.

8de8b151f1b24169819e827db3038ede.png

walter_hardy
Contributor III
Contributor III
Author

Hola de nuevo Julio. Muchas gracias! El cálculo es el que buscaba!. Ahora solo tengo un pequeño inconveniente. La tabla simple muestra siempre todos los registros, todas las fechas. Lo que necesito es mostrar un solo mes, es decir, que cuando el usuario elija por ejemplo el mes sep-2018 la tabla simple muestre el stock acumulado del 01/09, 02/09, 03/09...30/09 y no todas las fechas como muestra ahora. Eso se puede hacer?

juliocodesal
Contributor III
Contributor III

¿Has probado la segunda parte del mensaje que te pongo? Si te fijas cuando seleccionas por fecha si funciona. Deja de funcionar si seleccionas por año o mes. Prueba a poner en la selección de Fecha >31/08/2018<01/10/2018 y darle enter. Así tienes el reultado que quieres.

Para hacerlo funcionar más facil creo que tienes que crear las dimensiones mes y año el el scrip de carga de datos. He simplificado un poco la fórmula:

sum(Aggr(rangeSum(above(sum({<fecha=>}valor), 0, RowNo())), (fecha, (numeric, ascending))))

Si creas año y mes en el scrip:

sum(Aggr(rangeSum(above(sum({<fecha=, año=, mes=>}valor), 0, RowNo())), (fecha, (numeric, ascending))))

walter_hardy
Contributor III
Contributor III
Author

Probé de las dos maneras, pero me sigue mostrando todas las fechas. Incluso si cambio la dimensión fecha por mes también me trae todos los meses aunque seleccione solo uno, o el rango de fechas >31/08/2018<01/10/2018

juliocodesal
Contributor III
Contributor III

Si puedes sube el ejemplo con la dimensión mes y año creados en el scrip y hago yo unas pruebas a ver si puedo ayudarte. Yo no lo puedo hacer porque borraría los datos.