Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas,
Tengo la siguiente duda.....Yo leo unos ficheros de texto separados por "|" , uno de los campos es una fecha y lo leo de la siguiente forma
Date(floor(@1),'DD/MM/YYYY') as fecha
Esos registros que leo, los guardo a posteriori en un fichero .qvd.
Mi problemática ahora es la siguiente, quiero recuperar registros desde ese fichero .qvd, pero solo en determinado periodo. He intentado las siguientes opciones:
load *
FROM $(vDatosqvd) (qvd)
where fecha >= '01/11/2016'
where fecha >= Date('01/11/2016');
Pero en ningún caso me filtra por la fecha sino que me hace la carga de todos los datos guardados en el fichero qvd
¿Alguien tiene una idea de porque tiene ese comportamiento? ¿que estoy haciendo incorrecto?
Un saludo
Hola Jonay:
Los filtros de fechas es mejor usarlos en formato YYYY/MM/DD o en formato ordinal nnnnn (42702 = 28/11/2016)
Saludos
Joaquín
Hola Jonay:
Los filtros de fechas es mejor usarlos en formato YYYY/MM/DD o en formato ordinal nnnnn (42702 = 28/11/2016)
Saludos
Joaquín
Tal como Joaquín sugiere, deberías comprobar cómo se visualizan esos campos de fecha en la aplicación, si realmente se almacenan como DD/MM/YYYY o con cualquier otro formato.
También podrías utilizar el LOAD con algo parecido a
LOAD *
FROM File.qvd (qvd)
WHERE Date(Fecha) >= Date('28/11/2016');
Es decir, aplicando la función de fecha también sobre el campo, no solo sobre el valor. No es la mejor opción ya que aumentará el tiempo de carga y supone más mantenimiento.
En este aspecto, y si la carga siempre va a ser de una fecha en concreto, te recomendaría almacenar los QVDs por fechas, de forma que la lectura sea siempre completa:
SET vFechaCarga = '20161128'; // no se pueden usar caracteres como "/" ya que Windows no los soporta como nombres de fichero
LOAD *
FROM $(vFechaCarga).qvd (qvd);
o algo similar (un ejemplo de muchos aquí).
Buenas chicos,
Antes que nada darles las gracias por la ayuda.
El campo fecha cargado dentro del fichero .qvvw lo tengo en el formato DD/MM/YYYY. Si en el where donde cargo los datos vario el formato fecha como dice Joaquín, me funciona correctamente
where fecha >= '2016-11-28'
Ahora me surge la duda de porque qlikview de esa forma si lo reconoce, y porque asocia las fechas en diferente formato DD/MM/YYYY con YYYY/MM/DDDD. Pero funcionar, esta funcionando
Un saludo
Funciona porque si el valor de la fecha es numérico, QlikView hace la representación de forma automática, y aunque tú lo puedas ver en los gráficos, script o aplicación como como "DD/MM/YYYY" o "DD/YYYY/MM" o "nnnnn" es, al final, una representación de un mismo dato que no afecta al dato almacenado.
De hecho, tienes una variable en el script que establece cómo va a representar, por defecto, los valores numéricos en las funciones de fecha, pero también has de tener en cuenta el formato de origen, el driver para la extracción de los datos si lo hay, la configuración regional del sistema operativo, etc.
Más sobre representación e interpretación de fechas en QlikView: evaluating time stamp
Y en general sobre las fechas: Get the Dates Right