Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas a todos,
tengo una duda, y es que me he leído los "papers" y alguna documentación para realizar las cargas incrementales, y no he sido capaz de conseguir lo que deseo, tengo información histórica en BD la cual me gustaría tener en un QVD(histórico) para luego agregar información nueva desde otro QVD(nuevo) y así tener toda mi información historica y actual en un solo fichero.
el problema que tengo es que en todos los documentos que he leído me dicen que debo tener un campo de fecha y hora para saber el ultimo que fue cargado en el QVD(histórico) en la tabla de mi BD no cuento con este dato y no se si es por ello que no logro consolidar toda la información.
Es necesario este campo? alguien ha intentado hacer este proceso, que me pueda ayudar a implementar esto.
Agradezco de antemano toda la información y los consejos que puedan brindarme
Gracias.
Hola,
Sí, de hecho es bastante habitual utilizar este tipo de cargas como cargas incrementales:
Historico:
LOAD *
FROM Historico.qvd (qvd);
Actual: // por legibilidad, no es necesario
LOAD *
FROM FicheroHoy.xls;
// Ahora la tabla "Historico" contiene los datos tanto de Historico como de Actual
STORE Historico INTO Historico.qvd (qvd);
Espero que te ayude.
Miguel
Hola,
Voy a ponerte un ej. con una tabla cargada de éste modo. Se trata de una tabla que recoge las observaciones que hay en un fichero para cada mes de carga (cierre) y va concatenando los
registros en un qvd llamado ObservacionesCO$(vAñoCierre).qvd
De ésta forma se va generando un qvd por año
vAñoCierre es una vble. que contiene el año de carga.
vAñoMesCierre es una vble. que contiene el añomes de carga.
Dtwarehouse es una vble. que contiene la ruta donde están los qvds.
En la carga de la tabla se crean algunos campos para generar la temporalidad y que son el mes y año de la carga (en éste caso son los propios campos del archivo).
También se crea un campo clave, ObsCOID, de modo que los registros del mes se irán concatenando en el Hº siempre que no exista ya esa clave
/* Observaciones Cuadro obra */
Qualify *;
Unqualify ObraAÑOMESID, ObsCOID;
ObservacionesCO:
LOAD
$(vAñoMesCierre) as AÑOMESCIERRE,
ORANIO as AÑOCIERRE,
ORMES as MESCIERRE,
$(vAñoMesCierre) & '_' & OROBRA & '_' & ORTIP & '_' & ORCOD & '_' & ORUSER as ObsCOID,
$(vAñoMesCierre) & '_' & OROBRA as ObraAÑOMESID,
ORUSER,
ORTIP,
ORCOD,
ORDES;
SQL SELECT *
FROM $(LIB1).EMOBSER, (SELECT distinct USOBRA FROM $(LIB2).BDUSERS Where USMAES = '2' or USMAES = '3') TT1
Where OROBRA = USOBRA And ((ORANIO*100)+ORMES) = $(vAñoMesCierre) // se cogen las obervaciones del mes/año de carga
Order By ORUSER ASC
;
Unqualify *;
let errorMode_OLD = errorMode;
let errorMode = 0;
Concatenate(ObservacionesCO)
Load
*
From $(dtwarehouse)ObservacionesCO$(vAñoCierre).qvd (qvd)
Where not Exists (ObsCOID);
let ErrorMode = errorMode_OLD;
Store ObservacionesCO Into $(dtwarehouse)ObservacionesCO$(vAñoCierre).qvd;
drop table ObservacionesCO;
Un saludo,
La forma en como lo hago es la siguiente: tengo un QVD con datos historicos hasta una fecha, por ejemplo hasta el 31/Dic/2011. Luego leo de nuevo la tabla a partir de esta fecha y genero un QVD delta. Finalmente unifico ambos en uno solo.
Datos_H.QVD + Datos_D.QVD = Datos
Si te falta una fecha con que hacerlo, trata de poner una fecha a la tabla desde la cual estas cargando los datos.
Muchas Gracias por contestar con prontitud a mi duda, me ayudara bastante el ejemplo.
Ya os contaré si logré realizar el proceso de carga incremental
Hola otra vez,
Intente realizar algo similar al proceso que comento Sonia, pero no he sido capaz de hacerlo bien, me da error, indicando que no encuentra la tabla, lo cual es raro.
Explicaré lo que intente hacer:
No sé si lo estoy haciendo bien, si he fallado en algo comentarlo. A lo mejor lo que trato de hacer no es correcto.
Espero sus comentarios.
Gracias
Hola,
Si los campos en el QVD correspondiente a histórico y en el fichero excel tablanueva son los mismos, la concatenación es implícita, es decir, tiene lugar de forma automática sin necesidad de utilizar CONCATENATE. En QlikView dos tablas siempre se concatenan cuando el número de campos y el nombre de los mismos es idéntico.
Por eso cuando haces un RESIDENT de tablanueva (FROM es para ficheros, no para tablas ya cargadas) te dice que no existe, porque ya está concatenada con tablahistoirca.
Espero que te ayude.
Miguel
Gracias Miguel Angel, por responder... y aclararme este punto, ahora tengo otra duda...que la probaré pero antes de hacerlo me gustaría consultarte.
Si esta "tablanueva" la llevo a un QVD, luego se podría unir este QVD y el QVD Histórico en uno para que sea mi QVD Histórico(Master) por así llamarlo?
Lo que intento realizar es unir información de tabla de una BD e información nueva que será leida desde un fichero excel.
La idea que tenia era... llevar la información de la BD a un QVD histórico y luego ir añadiendo información nueva a este QVD histórico sin tener que llevarla a la BD, esto es posible?
No sé si me he explicado bien.
Gracias de antemano a todos.
Hola,
He intentado seguir lo que dices que haces. Yo creo que te faltaría guardar la Tablanueva en un archivo .qvd para poder luego hacer el From a esa tabla.
Un saludo,
Hola,
Sí, de hecho es bastante habitual utilizar este tipo de cargas como cargas incrementales:
Historico:
LOAD *
FROM Historico.qvd (qvd);
Actual: // por legibilidad, no es necesario
LOAD *
FROM FicheroHoy.xls;
// Ahora la tabla "Historico" contiene los datos tanto de Historico como de Actual
STORE Historico INTO Historico.qvd (qvd);
Espero que te ayude.
Miguel
Gracias a todos por las contestaciones.
Miguel Angel me ha funcionado correctamente!!!!
Era mucho mas sencillo de lo que estaba tratando de hacer.
Gracias!