Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
alexis_garcia
Creator II
Creator II

Set analysis fecha anterior

Hola,

Tengo una duda, a ver si pueden ayudarme!

Necesito los datos correspondientes a ayer (Esto lo consigo):

Count({$<YEAR={$(=Year(Today()-1))},MONTH={$(=Month(Today()-1))},DAY={$(=Day(Today()-1))}>} Datos)

Pero ahora necesito los datos acumulados desde el inicio hasta el día de ayer.

Hago lo siguiente pero no funciona:

Count({$<YEAR={$("<=Year(Today()-1))"},MONTH={$("<=Month(Today()-1))"},DAY={$("<=Day(Today()-1))"}>} Datos)


Qué estoy haciendo mla?


Gracias.


Un saludo.



1 Solution

Accepted Solutions
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

=Count({$<DATE={"<=$(=Date(Today()-1))"}>} Datos)

View solution in original post

23 Replies
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Alexis

Normal que no funcione si pides DIA < 21 omitirás del 22 al 30-31 de todos los meses !!!!

Construye un campo fecha !!!!

Count({$<DATE= {$("<=Today()-1)"} >} Datos)


Saludos

Joaquín

jmmayoral3
Creator
Creator

Hola Alexis

El identificador '$' representa los registros de la selección actual. en tu caso necesitas jugar con datos que están más allá del ámbito de la selección, por tanto necesitas el identificador '1' que representa el conjunto completo de todos los registros de la aplicación.

en condiciones normales eso funcionaría, pero tienes un error de concepto en la fórmula:

Count({1<YEAR={$("<=Year(Today()-1))"},MONTH={$("<=Month(Today()-1))"},DAY={$("<=Day(Today()-1))"}>} Datos).


No te está funcionando porque no puedes usar esa fórmula para hallar algo hasta ayer.

Imagina que hoy es 24/12/2015. O sea, que buscas algo menor que hoy (fecha máxima 23/12/2015)


Tu fórmula te devuelve cualquier cualquier día <= 24 o sea, (24,23,22....)

de cualquier mes <= 12   (12, 11, 10...)

de cualquier año <= 2015  (2015, 2014, 2013....)


O sea, devolvería 23/12/2015 pero también devolvería 24/12/2015 (cumple todas las condiciones)

En cambio no devolvería 25/11/2015 (recuerda que estas poniendo que el día debe ser menor que 24)


Tienes que reescribir la f´romula.


Yo crearía una variable con el día de ayer (ej: vL.Ayer = today()-1;

y utilizaría esa variable en la fórmula. Si tienes un campo fecha en tu modelo de datos, usa ese campo fecha. Si no lo tienes y sólo tienes Año, Mes y día, construye un campo fecha en el script a partir de esos tres campos (Makedate(YEAR,MONTH,DAY) as MyFecha).

Luego usa esta fórmula:


Count({1<MyFecha={$("<=vL.Ayer"}>} Datos)

alexis_garcia
Creator II
Creator II
Author

Es verdad Joaquín!

Como antes quería el dato de un día concreto al final me he liado.

Lo estoy intentando como dices pero no lo consigo.

Miro las fechas y el formato es el mismo, cambio el tipo de comillas o de sitio y tampoco funciona.

No entiendo cuál es el problema!

Gracias.

Un saludo.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Alexis:

Quizá el formato de DATE y TODAY no son iguales ?

Saludos

Joaquín

alexis_garcia
Creator II
Creator II
Author

Hola,

Manuel, tampoco lo consigo con el 1, el resultado me da 0, por lo que no debe de estar bien el formato.

Joaquín, es lo que comentas, porque el formato de la fecha es date y el de today() al restarle se convierte en número.

Cómo puedo hacer que el formato date pase a ser un número y poder ponerlo en el set analysis?

si pongo Count({$<Num(DATE)= {$("<=Today()-1)"} >} Datos) no lo reconoce. ( El problema es que no puedo tocar el script ).

Gracias a los dos.

Un saludo.

alexis_garcia
Creator II
Creator II
Author

Hola Jose Manuel,

Sí, ya estoy utilizando el campo fecha, pero mi problema creo que es que fecha tiene formato date y today()-1 formato num, por lo que la comparación no la está haciendo bien.

He creado una variable Date(Today()-1) para ponerla en set anañysis y compararla con DATE, pero tampoco funciona.

No sé cómo solucionarlo.

Gracias.

Un saludo.

jmmayoral3
Creator
Creator

ahora el error lo tienes en el propio set análisis. Tienes que poner un nombre de campo. No te admite funciones. O sea, no puedes poner Num(DATE)

alexis_garcia
Creator II
Creator II
Author

El problema es que no puedo tocar el script!

No sé como hacer que al cambiar el formato de DATE a num, pueda usarlo en set analysis.

Gracias.

Un saludo.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Num(Floor(DATE)) <= NUM(Floor(Today()-1)) ... floor quita la parte hora del TimeStamp