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: 
Not applicable

Proceso de Carga Incremental - Incremental Load Process

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.

1 Solution

Accepted Solutions
Miguel_Angel_Baeyens

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

View solution in original post

9 Replies
soniacoprosa
Creator
Creator

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,

jolivares
Specialist
Specialist

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.

Not applicable
Author

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

Not applicable
Author

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:

  1. Cargué la información de una tabla que tengo en BD (histórico) en un QVD (que seria el QVD histórico).
  2. Llamo a este QVD y lo nombré como tablahistorica.
  3. Cargo información nueva desde un fichero excel con la misma estructura de la tabla y nombro a esta como tablanueva.
  4. luego CONCATENATE(tablahistorica) LOAD * FROM tablanueva y trato de guardarla en un QVD a través de la sentencia STORE.
  5. al ejecutar todo va bien antes de llegar a la sentencia FROM tablanueva, la cual me dice que no existe.

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

Miguel_Angel_Baeyens

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

Not applicable
Author

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.

soniacoprosa
Creator
Creator

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,

Miguel_Angel_Baeyens

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

Not applicable
Author

Gracias a todos por las contestaciones.

Miguel Angel me ha funcionado correctamente!!!!

Era mucho mas sencillo de lo que estaba tratando de hacer.

Gracias!