Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

Not applicable

Load mesual al segundo dia de cada mes

Hola a todos una consulta quiero crear un qvd mensual que vaya acumulando ejemplo tengo qvd del periodo 201101 luego quiero hacer un left join del periodo 201102 pero quiero que sea autimatico la carga si alguien tuviera una idea sobre mi particular problema le agradeceria su apoyo, saludos

Hi all I want to create a query that is accumulated monthly QVD example I have QVD 201101 period then I do a left join for the period 201102, but want it to be automatic. The load if someone had an idea about my particular problem I would appreciate your help me,

greetings

9 Replies
sebastiandperei
Valued Contributor

Load mesual al segundo dia de cada mes

Hola Julian,

En primer lugar, deberías hacer un Concatenate entre el qvd almacenado, y la tabla que estás trayendo.

En segundo, intuyo que querés hacer una carga incremental. La idea es:

Ventas:

Load

     Producto,

     Cliente,

     Ventas,

     Fecha

From Ventas.qvd

Order By    

     Fecha asc;    

Let vUltFecha=Peek('Fecha');

Concatenate

SQL Select

     Producto,

     Cliente,

     Ventas,

     Fecha

From dba.TablaSQL

Where Fecha >= $(vUltFecha);

Store Ventas into Ventas.qvd;

Si no tenés QV Server, creás un .bat que contenga:

[Ruta QV, ejemplo "C:\Archivos de Programa\Qlikview\QV.exe"] -r [Nombre del archivo qvw, por ejemplo Ventas.qvw]

Luego creás un job en el schedule de Windows para el segundo día de cada mes y listo!!

Si tenés QV Server, lo último estuvo de más.

Saludos,

Sebas

Not applicable

Load mesual al segundo dia de cada mes

Gracias por la correccion claro lo que hago es un concatenate si quiero un incremental pero no por el ultimo registro o la ultima fecha te explico yo hago el cierre contable mensual entonces es una foto en el momento y creo mi qvd luego al siguiente mes hago los mismo la foto del momento y tengo mi segundo qvd asi sucesivamente cada mes y yo ahora lo hago manual mi concatenate lo que deseo es ir concatenando pero automaticamente haber si te aclare el panorama y muchas gracias igual por la atencion prestada.

Employee
Employee

Load mesual al segundo dia de cada mes

No tengo claro si he entendido bien el problema, pero yo lo que haría sería:

// 1-  Crear una tabla con los registros nuevos que quiero añadir a mi QVD

Ventas:

sql Select .....

from ....;

// 2- Concatenar el QVD con todos los registros que ya tenia

CONCATENATE

Load .......

from ventas.qvd

// 3- Almacenar la tabla entera en el QVD

STORE Ventas into ventas.qvd

Not applicable

Load mesual al segundo dia de cada mes

Hola fgs En teoria es asi como debe funcionar pero como hago para que me capture en paso 2 los qvds generados...saludos

Employee
Employee

Load mesual al segundo dia de cada mes

Julián,

En el código anterior, no es necesario cargar más de un QVD. Lo que hace el script es conectarse a la base de datos, traerse los datos nuevos contatenarlos con los datos del QVD y volver a escrivir el mismo QVD.

Otra aproximación (que a mi me gusta más) es tener un proceso que mensualmente crea un fichero QVD y tener un fichero QVD por mes; por ejemplo Ventas2012-01.qvd, Ventas2012-02.qvd, ....... El resultado sería que en un directoria tendría un fichero QVD por mes y el mes y año estaría codificados en el nombre del fichero.

Luego este código cargaría todos los QVD's del año 2011.

Ventas:

LOAD Customer,

     OrderID,

     Sales,

     Date

FROM

[Ventas2011-*.qvd]

(qvd);

Fíjate en el '*' del nombre del fichero.

Saludos, Ferran.

Not applicable

Load mesual al segundo dia de cada mes

Hola ferran yo tengo dos qvs uno el generador donde extraigo la data mes a mes por ejemplo cierre20111131,cierre20111231,cierre20121231  pero eso lo vengo ahciedno manualmente , luego tengo el otro archivo donde concateno y eso tambien lo hago manulamente: de sta forma lo hago  CIERRES: load fechacierre,importe,cliente.....from cierre20111131.qvd; concatenate(CIERRES)  load fechacierre,importe,cliente.....from cierre20111231.qvd;.................asi lo hago manualamente mes  a mes pero quiero que sea automatico mi cierree....saludos

Highlighted
Employee
Employee

Re: Load mesual al segundo dia de cada mes

Aquí tienes el código que yo pondría en las dos aplicaciones QV.

1) Generador de QVD mensuales.  Este código genera de forma automática un qvd para el mes actual.

let vHoy= Today();

let vAño=Year(vHoy);

let vMes=num(Month(vHoy));

let vFichero= 'Ventas-'&$(vAño)&'-'&$(vMes)&'.qvd';

trace $(vHoy);

trace $(vAño);

trace $(vMes);

trace $(vFichero);

Ventas:

LOAD Customer,

     OrderID,

     Sales,

     Date

FROM

[2012-02.xlsx]

(ooxml, embedded labels, table is Sheet1);

store Ventas into $(vFichero);

2) Cargador de QVD's. Este código carga todos los meses en una sola tabla. Qlikview los concatena de forma automática.

Ventas:

LOAD Customer,

     OrderID,

     Sales,

     Date

FROM

[Ventas*.qvd]

(qvd);

Te sirve?

Ferran.

sebastiandperei
Valued Contributor

Load mesual al segundo dia de cada mes

Me sacaste el script del teclado Ferran!! jejej

Muy buena, de todas maneras, la del aterisco en el From... no la sabía!!!

Voy a seguir insistiendo para responder al menos un tema!!!

Saludos

felalliap
New Contributor

Re: Load mesual al segundo dia de cada mes

Hola no se puede ordernar cuando sale directo del QVD!

se debe hacer un paso intermedio.

salu2