Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola buenas tardes,
Tengo un problema de performance, necesito recargar una sola ves registros de una base de datos llamada archive.qvd, a partir de esa fecha necesito hacer recargas de datos nuevos en un .qvd llamado delta (siendo delta, una tabla temporal) y unir las dos tablas y guardar nuevamente en archive.qvd, así cada media hora actualizar datos nuevos.
Saludos de antemano
Erick
Erick:
buenas te pongo el ejemplo de un excel que hice y me actualiza y guarda los datos en el QVD
espero te ayude
quiero intentar hacer la prueba de 1 qvd actualizar otro pero no me ha dado demasiado tiempo
tecomento mas adelante si logro hacerlo
saludos
Estimado Agustín Tinoco,
Encontré algo bastante bueno, con una condición IF
extraigo datos de "archive" o historico, ejemplo si hoy fuera 18/may/2015,
desde esa fecha hacía atrás, en lugar de 30 minutos que sea un mes,
entonces, ya tenemos desde 18 de mayo y ya paso un mes y ya es 18/jun/2015, entonces con un
LET fijo una variable si existe archive.qvd, la condición IF entonces me manda a sacar solo "DELTA", los últimos registros, a partir de la última recarga.
LET vDeltaqvdexistst=isnull(QvdCreateTime('../qvd/DELTA.qvd')); | // if qvd exists then 0 else -1 |
LET vArchiveqvdexist=isnull(QvdCreateTime('../qvd/archive.qvd')); | // if qvd exists then 0 else -1 |
Una ves que ya se si existe o no cada uno entonces extraigo la fecha en la que fue creado el qvd:
LET vDELTA=QvdCreateTime('../qvd/DELTA.qvd'); | // Muestra la fecha y hora en que fue creado DELTA.qvd |
LET vArchive=QvdCreateTime('../qvd/archive.qvd'); | // Muestra la fecha y hora en que fue creado archive.qvd |
Posteriormente
tabla1:
LOAD * FROM archive.qvd;
tabla2:
ADD LOAD * FROM DELTA.qvd;
Extra: aplicas un store Tabla1 into ../qvd/tabla3.qvd;
DROP TABLE tabla1;
Erick:
gracias por el comentario y por compartir esta información bastante interesenta quizas algun día me sirva en algun requerimiento.
saludos coordiales
puedes crear un qvw con los datos guardados y luego hacer una carga binaria sobre el mismo documento y luego hacer una concatenación con la nueva tabla, esto es lo más rápido para este tipo de cargas y supuestamente es lo utilizado para big data
Agustin Tinoco:
No hay de que, yo lo estoy implementando en un requerimiento.
Saludos.
Ramon,
Ya use el CONCATENATE, es muy útil cuando falta algún campo ya que lo forza:
tabla1:
load a,b,c from tabla1.qvd;
tabla2:
concatenate
LOAD a,c from tabla2.qvd;
Mas es el mismo principio el ADD o el CONCATENATE, y hay un recurso más, las lecturas dinámicas cuando las tablas tienen el mismo número de campos y nombres de los mismos.
tabla1:l
LOAD * from tabla*.qvd;
¿ puedes explicar un poco mas el proceso ?
El punto es obtener fechas con hora, y con ello crear variables para posteriormente con condiciones where dinámicas, es decir que cada que se actualice encuentre nuevas fechas de la última vez que se actualizo, una vez en memory, puedes integrar todo e ir construyendo las cargas incrementales.
Por ejemplo:
LET vDeltaqvdexistst=isnull(QvdCreateTime('../qvd/DELTA.qvd')); | // if qvd exists then 0 else -1 |
LET vArchiveqvdexist=isnull(QvdCreateTime('../qvd/archive.qvd')); | // if qvd exists then 0 else -1 |
Una ves que ya se si existe o no cada uno entonces extraigo la fecha en la que fue creado el qvd:
LET vDELTA=QvdCreateTime('../qvd/DELTA.qvd'); | // Muestra la fecha y hora en que fue creado DELTA.qvd |
LET vArchive=QvdCreateTime('../qvd/archive.qvd'); | // Muestra la fecha y hora en que fue creado archive.qvd |
Posteriormente
tabla1: //nombre temporal para integrar archive con la carga nueva.
LOAD * FROM archive.qvd;
tabla2: //al concatenar con tabla 1, desaparece como tal, la tabla2
ADD LOAD * FROM DELTA.qvd //Puede ser desde una Base de datos cualquiera, SQL, MySQL, Oracle, etc. Debe
where Date>=$(vArchive); //contener los mismos campos, o al menos la mayoría.
Extra: aplicas un store tabla1 into ../qvd/archive.qvd; //Se sobreescribe Archive con la carga Archive + DELTA
DROP TABLE tabla1;
*Si tienes alguna duda hazmela saber.
Muchas gracias ha quedado comprendido.
1.- ver la fecha de creación del fichero qvd.
2.- cargar el qvd.
3.- cargar bbdd con where y la fecha de creacion del qvd del paso 1.
4.- hacer un store y eliminar tablas.
========
pero con esto me surge una duda:
si las fechas de creación no son en tiempo real, ¿no seria mejor saber cual es la ultima fecha cargada en el qvd ?
gracias.-