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: 
hutchinsonbss
Contributor II
Contributor II

Variable con Set Analisis

Hola

 

Estoy intentando crear una variable para evitar poner 1000 veces la misma formula en un dashboard que fija la fecha o el mes de diferentes campos.

Hasta ahora la unica fórmula que he conseguido que funcione es: Ejemplo para fijar el día

=sum({< [Fecha] = {">=$(=Date(DayStart(Today()),'DD/MM/YYYY'))<=$(=Date(DayEnd(Today()),'DD/MM/YYYY'))"} >}[desv.rech.tot.obj])

 

Siendo  [desv.rech.tot.obj] el campo a medir

Como podría hacer para que la fórumla anterior ({< [Fecha] = {">=$(=Date(DayStart(Today()),'DD/MM/YYYY'))<=$(=Date(DayEnd(Today()),'DD/MM/YYYY'))"} >}  fuera una varible que pudiera llamar "Settoday" y asi solo escribir algo del estilo

=sum ((Setttoday) [desv.rech.tot.obj]) y asi poder ir cambiando el campo,  en base a la necesidad

 

Gracias por la ayuda

 

7 Replies
jmmayoral3
Creator
Creator

Hola. Prueba a hacerlo de una de estas 2 formas:

en la expresión, poner este set analysis: 

SUM({$<Fecha={“=$(=TODAY())”}>} [desv.rech.tot.obj])

o creando una variable: Setttoday = today() 

SUM({$<Fecha={“=$(Setttoday )”}>} [desv.rech.tot.obj])     

Luego la usas así:

Por el Set Analysis tan complicado que has puesto en el ejemplo, deduzco que el campo Fecha contiene además la hora. Te recomiendo que en el Script dividas ese campo en 2, uno para la fecha y otro para la hora.

Para tener más ejemplos de SET analysis, te recomiendo que te descargue mi manual en español donde explico con detalle todo esto.

https://community.qlik.com/t5/QlikView-Documents/Set-Analysis-An%C3%A1lisis-de-conjuntos-en-Espa%C3%...

 

 

 

 

hutchinsonbss
Contributor II
Contributor II
Author

Hola y gracias por la rapidez

 

La verdad es que he probado decenas de fórmulas de Set Anaysis, y solo me funciona esta que puse, por eso el intentar ponerla como una variable. Es mas que probable que la causa sea el formateo de la fecha en la carga como bien has dicho, pero no se arreglarlo.

Estos datos vienen de un excel, o sea que a saber que me traigo.

 

LOAD
Fecha,
desv.rech.tot.prdo,
desv.rech.tot.obj,
desv.tot.tot.prdo,
desv.tot.tot.obj,

 

Esta es la carga, como ves la fecha no está formateada, me podrías ayudar a hacerlo?

 

Pd. tu documento de Set Analysis es increible, le echare unas horas en cuanto tenga tiempo, promete ser muy esclarecedor

jmmayoral3
Creator
Creator

Crea un cuadro de lista con la fecha.

si te aparece alineada a la derecha, es una cadena de caracteres.

Si te aparece alineada a la izquierda, es un campo fecha. Lo primero que tienes que hacer es identificar el tipo del campo fecha que estás cargando.

Si es una cadena de caracteres, viniendo de excel (que siempre da problemas), te recomiendo que en es script hagas: (suponiendo que la fecha en excel tenga este formato: DD/MM/YYYY)
............
makedate(mid(Fecha,7,4), mid(Fecha,4,2), Left(Fecha,2) AS Fecha,
.........

De esta forma te aseguras que el campo Fecha será de tipo Date.
También lo puedes intentar hacer directamente con Date(Date#(Fecha),'DD/MM/YYYY') pero por experiencia propia, depende de cómo esté en el excel, te puedes volver loco hasta que lo consigas cargar correctamente.

En caso de tener añadida la hora, si no te hace falta no lo cargues. Si te hace falta, cárgalo en otro campo distinto.

 

hutchinsonbss
Contributor II
Contributor II
Author

Hola, efectivamente se alinean a la derecha.

LOAD
makedate(mid(Fecha,7,4), mid(Fecha,4,2), Left(Fecha,2),
desv.rech.tot.prdo,
desv.rech.tot.obj,
desv.tot.tot.prdo,
desv.tot.tot.obj,
prod.tot.dia,
prod.tot.prdo,

 

Lo he metido tal cual.... supongo que no es correcto como lo hecho, por que me da error. He quitado y puesto , ; etc, y no soy capaz 

 

jmmayoral3
Creator
Creator

 

Te falta cerrar el paréntesis de la función Makedate. Y Renombra el campo:

makedate(mid(Fecha,7,4), mid(Fecha,4,2), Left(Fecha,2)) AS Fecha,

 

De todas formas, si lo está alineando a la derecha, ya lo está cargando como fecha.

hutchinsonbss
Contributor II
Contributor II
Author

Ok, gracias, efectivamnete no ha cambiado nada, al ser ya como fecha, no consigo que el set analyisis funcione mas que con la formula larga.
SI consiguiera encapsularla en una variable sería ideal
jmmayoral3
Creator
Creator

Hola.

O sea, que ya has cargado en el script la fecha asegurándote de que es formato fecha (usando el Makedate).

¿Has probado ahora si te funciona ese set analysis en las expresiones?

SUM({$<Fecha={“=$(=TODAY())”}>} [desv.rech.tot.obj])