Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
valmanar
Contributor III
Contributor III

Error de carga al leer una tabla con un where sobre una variable

Buenos días, tengo el siguiente script en el cuál almaceno en una variable la maxima fecha de un qvd, luego utilizo esta variable para filtrar una tabla por ella pero en esta select me está dando constantemente error y he comprobado que es por la condición del where con la variable. Lo que sí he visto que si pongo el debug la variable dónde almacena la fecha me muestra su valor númerico, por si os sirve de indicación, he probado con comillas, sin comillas, ¿qué estoy haciendo mal?. Gracias.

UltimaCarga:

    LOAD MAX([f_vent.data_change_dtw]) as fechaUltimaCarga Resident CargaQvd;

    //lo dejo en variable

    LET vUltimaCarga = Peek('fechaUltimaCarga',0,'UltimaCarga'); 

   

    DROP TABLE CargaQvd;

    DROP TABLE UltimaCarga;

   

    //cargamos modificados   

    LOAD [key_venta] as [f_vent.key_venta],

    [fecha] as [f_vent.fecha],

    [tpv] as [f_vent.tpv],

     .....

     .....

     [id_md_tipo_cliente] as [md_tcl.id_md_tipo_cliente];

    [modificados_f_venta]:

    SELECT "key_venta",

    "fecha",

     .....

     ....

     "id_md_tipo_cliente"

    FROM "public"."f_venta" WHERE data_change_dtw > '$(vUltimaCarga)';

4 Replies
sorrakis01
Specialist
Specialist

Hola,

Cuando almacenas la variable pon la función Date (todo tu cálculo)

es decir,

LET vUltimaCarga = Date(Peek('fechaUltimaCarga',0,'UltimaCarga'));

Saludos,

valmanar
Contributor III
Contributor III
Author

Muchas gracias Jordi por tu inestimable ayuda, la verdad es que sigue sin reconocermelo y sigue dándome error, no sé por dónde tirar, el campo de la base de datos con el que estoy comparando "data_change_dtw" tiene formato timestamp en la base de datos YYYY-MM-DD dd:mm:ss, supongo que no estará comparando con el mismo formato contra la variable pero no doy con el formato correcto, además es curioso que la variable vUltimaCarga siempre tiene el valor 2020-12-31 cuándo no tengo esa fecha en la tabla que estoy consultando. ¿Alguna idea?, gracias por todo.

Saludos.

MarioCenteno
Creator III
Creator III

Intenta asi

Let vUltimacarga =max(fecha)

Miguel_Angel_Baeyens

Para saber exactamente qué es lo que esa variable contiene, haz un TRACE sobre la variable justo después de asignarle el valor:

TRACE vUltimaCarga es $(vUltimaCarga);

Utilizando Date() en una variable declarada con LET, el resultado se evalúa antes de asignarse, es decir, si por ejemplo el resultado de Date() es 30/07/2018 (formato de fecha por defecto en España), la asignación a la variable será del valor 0.0021237, es decir 30 dividido por 7 dividido por 2018.

Podría también ser que el valor que QlikView lee no tiene el mismo idéntico formato que el contenido en el campo, por ejemplo, 30/07/2018 (resultado de Date() en España) no es igual a 30.07.2018 (resultado de Date() en Suiza), en cuyo caso deberás utilizar una máscara de formato de fecha en la función Date().