Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
igutierrezp
Contributor II
Contributor II

Seleccionar información de los últimos 15 días.

Estimados, necesito un poco de sus conocimientos.

Tengo que crear un reporte diario en el cual la información es histórica de hace 3 años, pero se me pidió que el reporte tenga solo los datos de los últimos 15 días.

les dejo una imagen de los campos.

Se me ocurre hacerle al campo:

FechaDoc <= 15                                  no me funciona

Today(FechaDoc)<= 15                    no me funciono

quedo atento a sus respuestas y desde ya muchas gracias.

 

 

1 Solution

Accepted Solutions
jmmayoral3
Creator
Creator

Hola.

Si te devuelve 0 y -1, correcto. Te está funcionando bien. Está evaluando la expresión y te está diciendo si se cumple o no se cumple y ese valor lo mete en el campo Fecha2.contrato.
Recuerda que el valor -1 es TRUE y 0 es FALSE.

Una vez que tienes eso en tu modelo, puedes usarlo para identificar las fechas que cumplen la condición. en cada expresión tendrías que usar un set analysis del tipo SUM({<Fecha2.contrato={-1}> Ventas). De esta forma sólo tendría en cuenta las fechas de menos de 15 dáis.

Pero añadir el set analysis en cada expresión de cada gráfico es un poco tedioso, por lo que yo seguiría con el plan A: Filtrar los datos en el script.

Si no te reconoce TODAY() en el WHERE es porque lo estás poniendo en el WHERE del SQL y por supuesto esa función no es de ORACLE, por eso falla.

Tienes que poner el WHERE en la sentencia LOAD o hacer el WHERE del SQL como te dice Ruben en el POST anterior.

Tu script tiene que quedar así:

NOMBRETABLA:

LOAD campo1 AS xxxxx,
            campo2 AS yyyyy,
            campo3 AS zzzzz,
            ERDAT    AS Fecha
WHERE Interval(Today() - ERDAT, 'D') <=15;
SQL SELECT campo1,
                          campo2,
                          campo3,
                          ERDAT
FROM tabla_oracle

;

View solution in original post

15 Replies
jmmayoral3
Creator
Creator

Hola Igutierrezp

en el script carga sólo los registros que cumplan la condición de que FechaDoc <= 15.

Interval(Today() - FechaDoc, 'D') <=15

 

igutierrezp
Contributor II
Contributor II
Author

Estimado, el valor que me devuelve es 0 y -1 pero me sigue mostrando la información histórica no los días que necesito.

lo que me indicaste lo puse en el script: (ERDAT es el campo de sap que uso y que es el campo fecha)

(Interval(Today() - ERDAT, 'D') <=15)                   as          Fecha2.contrato

 

pero me devolvió igual toda la información y en el campo Fecha me muestra solo 0 y -1

 

jmmayoral3
Creator
Creator

Hola.

Efectivamente tal como te lo he escrito te devuelve sólo -1 o 0. Si lo metes en una expresión debes poner el correspondiente IF.

             IF(Interval(Today() - ERDAT, 'D') <=15,  <expresión,_si_cumple>, <expresion_si_no_cumple>)

Pero yo que tu, como quieres sólo los datos de los últimos 15 días, lo pondría en el LOAD del script

             WHERE Interval(Today() - ERDAT, 'D') <=15.

Si sigue sin funcionar, entonces es porque ERDAT no te lo está reconociendo como fecha o el formato de ambas fechas (TODAY() y ERDAT) no coinciden. En ese caso tendrás que convertir alguna de ellas con DATE() o DATE#()

 

Saludos.

igutierrezp
Contributor II
Contributor II
Author

ah entiendo!

Estimado pero en el reporte es necesario que me muestre las fechas que estén dentro de esos 15 días, a los ejecutivos no le serviría si cumple o no, ya que el reporte trata de las ventas pendientes. y ellos necesitan saber el dato de la fecha.

como podría hacer para que el reporte muestre solo la información de los últimos 15 días, pero que muestre la fecha?

 

De todas maneras estimado me ayudas bastante, muchas gracias desde ya!.

rubenmarin

Hola, en la carga de datos podrías añadir una condición para cargar solo los registros de los últimos 15 días, algo como:

LOAD Campo1,

  Campo2...

Where CampoFecha>=Today()-15

igutierrezp
Contributor II
Contributor II
Author

Hola Ruben, muchas gracias por tu respuesta.

pero al hacerlo en el load me sale error, seguro que no me reconoce el TODAY()

se me a complicado mucho esto de los últimos 15 días

Saludos y muchas gracias de todas maneras. 

jmmayoral3
Creator
Creator

Hola.

Al filtrar los campos en el script con el WHERE que te puse en el post anterior, estás tomando sólo los registros de los últimos 15 días. Eso no significa que no puedas mostrar la fecha. Podrás seguir haciendo los gráficos y tablas mostrando el campo fecha y los ejecutivos verán lo que quieren ver. Un informe de ventas por fecha de los últimos 15 días.

Lo único que estás haciendo es quedarte sólo con los registros que te interesan de todos los que tienes en tu BD. ¿Para qué vas a cargar todos si sólo quieres trabajar con los de los últimos 15 días?

Saludos

jmmayoral3
Creator
Creator

Hola.

¿Te ha funcionado la solución?

igutierrezp
Contributor II
Contributor II
Author

Estimado, muchas gracias por tu interes, eh intentado de todas las maneras que me han indicado pero no me funciona. en principio:

ERDAT>=today()-15 as Fecha2.contrato    En el load si pongo esto, me muestra valores 0 y -1 en el gráfico.

ERDAT>=today()-15  En el Where, si pongo esto en el where no me toma el Today() no lo reconoce y me da error.

intenté también en la expresión en el gráfico lo cual si me trae solo los registros de los últimos 15 días pero la información de las cantidades de otro campo se ve afectado y no trae los datos.

 

Así que aun no puedo resolver esta problemática que no pensé me costaría tanto solucionar.

muchas gracias estimado, saludos.