Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
rcantusoles
Contributor
Contributor

Joining multiple tables with different fields QlikView QVD files (Como unir varias tablas con campos diferentes con archivos QVD en QlikView)

Hello friends, how about, my problem is this, I'm driving information pig farms and want to join tables with different information, Inventory, Sales, outputs, transfer, Sharecropping, breeding stock and Tickets, want to join these tables into a single for operations and to take those produced kilograms which is the main objective of the final report, the bag information from databases to store files in qvd where I perform table joins qvd level files, so do not I could achieve.

The fields are the same, just change the fields that carry operations, such as field sales the sales table does not come on the table Inventories or sharecropping or any table that I mentioned, so I ask for help on how to join these tables into one and to perform the operations that are relevant kg produced, thanks in advance ...

Translated with Google Translate - Qlik Community Administrative Team

Hola amigos, que tal, mi problema es el siguiente, estoy manejando información de granjas porcinas y quiero unir tablas con diferente información, Inventarios, Ventas, salidas, traspaso, Aparcería, Pie de cría y Entradas, quiero poder unir esas tablas en una sola para realizar operaciones y poder sacar los kilogramos producidos que es el objetivo principal del reporte final, la información la saco desde las bases de datos para guardarlas en archivos qvd, donde quiero realizar las uniones de tablas a nivel de archivos qvd, por lo que no he podido lograr.

Los campos son iguales, solo cambian los campos que llevan operaciones, por ejemplo el campo de Ventas de la tabla de Ventas, no viene en la tabla de Inventarios o de Aparcería o de cualquier tabla que he mencionado, por lo que pido ayuda de como poder unir estas tablas en una sola y poder realizar las operaciones pertinentes que son los kg producidos, gracias de antemano...

9 Replies
maximiliano_vel
Partner - Creator III
Partner - Creator III

Hola, podrias forzar la concatenacion de las tablas

Fact:

LOAD Campo1,

          Campo2,

          ...

          ...

          Ventas,

          'ventas' as TipoDato

FROM Ventas.qvd;

CONCATENATE (Fact)

LOAD Campo1,

          Campo2,

          ...

          ...

          Inventario,

          'inventario' as TipoDato

FROM Inventario.qvd;

El resultado sería una tabla con los campos

Campo1,

Campo2,

...

...

Ventas,

Inventario,

TipoDato

ecolomer
Master II
Master II

No mencionas si las tablas son muy grandes o no, lo que podría condicionar la respuesta.

Yo creo que si lo que quieres es crear una tabla juntando la información, esto lo puedes realizar con un JOIN.

Para ello puedes mirar este post (por si no estás muy puesto con el tema de los joins):

Different Join Functions in Qlikview

rcantusoles
Contributor
Contributor
Author

Hola gracias por tu respuesta, según tu ejemplo, el tipoDato que mencionas me hará una mezclade todos lo datos contenidos en Ventas e Inventarios, por lo que lo necesito separados en la misma tabla para poder realizar las operaciones, si estoy mal me pudieras explicar porque tendría que nombra el mismo nombre de campo en cada union?


Este es el script que tengo para llamar a los archivos, para tener una clara idea de lo que estoy necesitando, o que está en negritas son los campos que deseo utilizar para realizar el calculo de los kilos producidos, por lo que necesito que esté en una sola tabla, agradezco tu repuesta:


InventariosPalomas:

LOAD Linea,

     Granja,

     InventarioInicialPalomas,

     InventarioFinalPalomas,

     Año,

     Meses

FROM

inventariospalomas.qvd

(qvd);

VentasPalomas:

LOAD Linea,

     Granja,

     VentasPalomas,

     Año,

     Meses

FROM

ventaspalomas.qvd

(qvd);

SalidaPCPalomas:

LOAD Linea,

     Granja,

     PiedecriaPalomas,

     Año,

     Meses

FROM

salidaspdcpalomas.qvd

(qvd);

TrapasoSalidaPalomas:

LOAD Linea,

     Granja,

     TraspasoSalidaPalomas,

     Año,

     Meses

FROM

traspasosalidapalomas.qvd

(qvd);

TraspasoEntradasPalomas:

LOAD Linea,

     Granja,

     TraspasoEntradaPalomas,

     Año,

     Meses

FROM

traspasoentradapalomas.qvd

(qvd);

EntradasPalomas:

LOAD Linea,

     Granja,

     EntradasPalomas,

     Año,

     Meses

FROM

entradaspalomas.qvd

(qvd);

rcantusoles
Contributor
Contributor
Author

Se me pasaba estos campos los ocupo separados en una nueva tabla...

maximiliano_vel
Partner - Creator III
Partner - Creator III

Si de pronto tuvieras un excel de que es lo que esperas en el resultado final, sería más fácil entender...

Inicialmente la concatenación que te menciono al final tendrías una sola tabla con todos los valores, estos sería los campos:

Año

Meses

Linea

Granja

InventarioInicialPalomas

InventarioFinalPalomas

VentasPalomas

PiedecriaPalomas

TraspasoEntradaPalomas

TraspasoSalidaPalomas

EntradasPalomas

TipoDato

El campo TipoDato es para identificar cual es la fuente de datos, y como tu dices, es para poder realizar otras operaciones con Set Analysis.

Si lo que requieres es un solo campo donde estén todos los valores, entonces deberíamos hacer los siguiente:

Fact:

LOAD Linea,

     Granja,

     InventarioFinalPalomas as Valor,

     Año,

     Meses,

     'inventarioFinal' as TipoDato

FROM inventariospalomas.qvd (qvd);

CONCATENATE (Fact)

LOAD Linea,

     Granja,

     InventarioInicialPalomas as Valor,

     Año,

     Meses,

     'inventarioInicial' as TipoDato

FROM inventariospalomas.qvd (qvd);

CONCATENATE (Fact)

LOAD Linea,

     Granja,

     VentasPalomas as Valor,

     Año,

     Meses,

     'ventas' as TipoDato

FROM ventaspalomas.qvd (qvd);

CONCATENATE (Fact)

LOAD Linea,

     Granja,

     PiedecriaPalomas as Valor,

     Año,

     Meses,

     'salidas' as TipoDato

FROM salidaspdcpalomas.qvd (qvd);

CONCATENATE (Fact)

LOAD Linea,

     Granja,

     TraspasoEntradaPalomas as Valor,

     Año,

     Meses,

     'traspasoEntrada' as TipoDato

FROM traspasoentradapalomas.qvd (qvd);

CONCATENATE (Fact)

LOAD Linea,

     Granja,

     TraspasoSalidaPalomas as Valor,

     Año,

     Meses,

     'traspasoSalida' as TipoDato

FROM traspasosalidapalomas.qvd (qvd);

CONCATENATE (Fact)

LOAD Linea,

     Granja,

     EntradasPalomas as Valor,

     Año,

     Meses,

     'entradas' as TipoDato

FROM entradaspalomas.qvd (qvd);

En cuyo caso únicamente quedarías al final con una tabla con los siguientes campos:

Año

Meses

Linea

Granja

Valor

TipoDato

Por favor me cuentas si esto es lo que necesitas

Saludos

rcantusoles
Contributor
Contributor
Author

Hola, gracias por tu respuesta, efectivamente, como mencionas en la primera parte, necesito todos los campos que se unan a una sola tabla, por lo que el TipoDato no me queda claro para que, pero esta sería la estructura que ocuparía:

           

AñoMesesLineaGranjaInventarioInicialPalomasInventarioFinalPalomasVentasPalomasPiedecriaPalomasTraspasoEntradaPalomasTraspasoSalidaPalomasEntradasPalomasTipoDatokgProducidos

Los kg producidos seria un campo calculado...

maximiliano_vel
Partner - Creator III
Partner - Creator III

Entonces lo podrías tomar como:

FactTmp:

LOAD Linea,

    Granja,

    InventarioFinalPalomas,

    Año,

    Meses

    'inventarioFinal' as TipoDato

FROM inventariospalomas.qvd (qvd);

CONCATENATE (FactTmp)

LOAD Linea,

    Granja,

    InventarioInicialPalomas,

    Año,

    Meses,

    'inventarioInicial' as TipoDato

FROM inventariospalomas.qvd (qvd);

CONCATENATE (FactTmp)

LOAD Linea,

    Granja,

    VentasPalomas,

    Año,

    Meses,

    'ventas' as TipoDato

FROM ventaspalomas.qvd (qvd);

CONCATENATE (FactTmp)

LOAD Linea,

    Granja,

    PiedecriaPalomas,

    Año,

    Meses,

    'salidas' as TipoDato

FROM salidaspdcpalomas.qvd (qvd);

CONCATENATE (FactTmp)

LOAD Linea,

    Granja,

    TraspasoEntradaPalomas,

    Año,

    Meses,

    'traspasoEntrada' as TipoDato

FROM traspasoentradapalomas.qvd (qvd);

CONCATENATE (FactTmp)

LOAD Linea,

    Granja,

    TraspasoSalidaPalomas,

    Año,

    Meses,

    'traspasoSalida' as TipoDato

FROM traspasosalidapalomas.qvd (qvd);

CONCATENATE (FactTmp)

LOAD Linea,

    Granja,

    EntradasPalomas,

    Año,

    Meses,

    'entradas' as TipoDato

FROM entradaspalomas.qvd (qvd);

NOCONCATENATE

Fact:

LOAD

    Año,

    Meses,

    Linea,

    Granja,

    InventarioInicialPalomas,

    InventarioFinalPalomas,

    VentasPalomas,

    PiedecriaPalomas,

    TraspasoEntradaPalomas,

    TraspasoSalidaPalomas,

    EntradasPalomas,

    InventarioInicialPalomas+InventarioFinalPalomas+VentasPalomas+PiedecriaPalomas+TraspasoEntradaPalomas+TraspasoSalidaPalomas+EntradasPalomas as KgProducidos,

    TipoDato

RESIDENT FactTmp;

DROP Table FactTmp;

El campo TipoDato lo puedes utilizar por ejemplo si quieres la suma de todas las entradas de palomas, entonces sería

Sum({<TipoDato={entradas}>} EntradasPalomas)

rcantusoles
Contributor
Contributor
Author

AHH perfecto, lo probaré, solo una duda, al poner DROP Table FacTmp a que te refieres con esa instrucción, disculpa apenas estoy iniciando con esto y no he llevado cursos...

maximiliano_vel
Partner - Creator III
Partner - Creator III

No hay problema para eso está la comunidad, como tu sabes, todo lo que cargamos a través del script (es decir los LOADs) se cargan en memoria, la instrucción de DROP Table es únicamente para que baje la tabla FactTmp de memoría, y deje el resultado de la tabla Fact.

A todas estas una pequeña corrección en el script que te acabo de enviar, revisalo nuevamente...

Saludos