Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Seleccionar fechas independientemente de la selección

Hola, yo tengo un campo fecha y quiero hacer la suma de las ventas de los últimos 7 días, pero sin tener en cuenta la selección que se haga. No puedo usar la función today() porque los datos no siempre están actualizados a tiempo real,

por ejemplo si la máxima fecha es 2015-03-28, me tendría que sumar hasta el día 22

La siguiente expresión, se supone que da lo que busco pero sobre la selección que se hace

sum({<fecha={">$(=max(date(fecha-7)) <= $(=max(date(fecha)))"}>} cantidad)

Pense en quitarle los $, pero no funciona. ¿Alguna sugerencia?

Un saludo

20 Replies
sorrakis01
Specialist
Specialist

Hola,

1-. En el campo Fecha tendrías que poner por ejemplo:

LET vDateMax = Floor(Today()-1)

Esto te va a devolver un valor numérico por eso luego uso el Date.

2-. Si si perdona Recuperacion es Cantidad en tu caso.

Anonymous
Not applicable
Author

let vDateMax = Floor(today() - 1);

A ver porque me estoy volviendo un poco loco, si yo pongo la siguiente expresión

Sum({1<Fecha={">=$(=Date($(vDateMax)-7))"}, ID= $::ID >} Cantidad)

me suma las cantidades en los que haya datos para ese ID, todas, no los últimos 7 días. Pero resulta que el nombre de mi campo es fecha, en minúscula y si yo pongo fecha en minúscula, el resultdo que me da es 0.

Así que yo no se ya que esta haciendo esto.... :S

sorrakis01
Specialist
Specialist

Creo que los 2 nos estamos volviendo un poco locos:

Vamos a ver, En la pregunta inicial no me hablabas del ID así que iremos paso a paso:

1-. La expresion: Sum({1<Fecha={">=$(=Date($(vDateMax)-7))"} >} Cantidad) te funciona? te da lo que querías?

2-. De ser ok pasamos al punto 3 si no te funciona no se que puede ser. Revisa la variable.

3-. Si lo que quieres es que sume con el ID ya lo haces bien:

     Sum({1<Fecha={">=$(=Date($(vDateMax)-7))"}, ID= $::ID >} Cantidad)


4-. Si te da problemas con la fecha no lo entiendo porque a mi esta expresion me funciona perfectamente. Si te da 0 es     que tienes algun campo fecha que no lo está tratando como tal y para ello tendrás que usar el Date para  pasarlo a       texto

5-. Si no te funciona nada de lo que te he dicho a lo mejor alguien mas quiere participar o si quieres subes el proyecto        y le doy un vistazo.

Saludos,

sorrakis01
Specialist
Specialist

y otra posibilidad es:

Sum({$<Fecha={">=$(=Date($(vDateMax)-7))"},Año=,Mes=,Día=,Semana=,PeriodoID=,Trimestre=,TrimestreID=,Periodo=>} Cantidad)

En esta no tendrá en cuenta las selecciones que hagas de Año, Mes, Dia, Trimestre, TrimestreID, Periodo pero si que tendría en cuenta las de ID o Cliente o lo que tenga tu proyecto.

Anonymous
Not applicable
Author

Jordi, te tengo buenas noticias, ya casi funciona jajaja Te comento lo que pasaba, tenia que ver con el formato de la fecha, mi formato de fecha cuando creo el calendario maestro es el siguiente DD/MM/YYYY

La expresión que adapte de tu mensaje anterior es la siguiente:

sum({$<fecha = {">=$(=Date($(vDateMax)-7,'DD/MM/YYYY'))"},mes=,dia=,año=>} Cantidad)

La variable la creo a partir del dia anterior al dia today

let vDateMax = Floor(today() - 1);

La cuestión es que, los datos en ocasiones llevan retraso de algunos días, entonces me preguntaba como podia inicializar la variable vDateMax, a partir de la máxima fecha que yo tenga en mis datos, que no tiene porque ser la máxima fecha en el calendario maestro. Seria inicializarla combinando max(fecha) donde cantidad sea distinto de 0

Un saludo

alex_millan
Creator III
Creator III

Buenas Jonay,

tienes la opción de crear un disparador que se ejecute al abrir el documento:

     Configuraciones --> Propiedades de documento --> Disparadores

     En la primera sección Procedimientos de Evento de Documento --> Al abrir --> Añadir acción:

     Tipo de acción --> Externo --> Establecer variable

     y defines la variable vDateMax con el valor:

          =Max({1<Cantidad -= {0}>}Fecha)

Cada vez que abras el documento asignará el valor a la variable en función de los datos cargados.

Si lo prefieres puedes crear un disparador original para que se ejecute cada vez que se haga una recarga (en caso que lo recargues manualmente).

Espero que te resulte útil.

Un saludo

sorrakis01
Specialist
Specialist

Me alegro que ya casi lo tengas,

Como dice Alex es una buena manera.

Pruébalo y cierra el tema.

Saludos,

Anonymous
Not applicable
Author

Buenas Alex,

Me parece una buena opción y que en el caso de funcionar solventa mi problema. La cuestión es que me esta dando un error de sintaxis. Al abrir la ventana que comentas, pongo los datos

variable --> vDateMax

valor --> =  Max({1<Cantidad = -{0}>} fecha)   me dice que la expresión esta ok, pero me resalta en rojo desde la última }, por lo tanto no es correcta. Puse lo del -{0}, que se supone que me excluye el que tenga valor 0,  lo de -={0} tampoco me funciona, me da igualmente error de sintaxis

Un saludo

alex_millan
Creator III
Creator III

Jonay,

la expresión es correcta, yo he testeado la expresión antes de responderte y funciona perfectamente. Te adjunto ficheros muestra.

Revisa:

- que hayas creado previamente la variable en el panel de variables y que el nombre coincide

- que los campos que has puesto coinciden exactamente con los que tienes en la estructura de datos

- que el campo Cantidad es numérico

Te tendría que funcionar perfectamente.

Un saludo

sorrakis01
Specialist
Specialist

no dijiste que Fecha lo tenias en minusculas? que el tema no vaya por allí....