Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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...
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
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):
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);
Se me pasaba estos campos los ocupo separados en una nueva tabla...
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
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ño | Meses | Linea | Granja | InventarioInicialPalomas | InventarioFinalPalomas | VentasPalomas | PiedecriaPalomas | TraspasoEntradaPalomas | TraspasoSalidaPalomas | EntradasPalomas | TipoDato | kgProducidos |
Los kg producidos seria un campo calculado...
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)
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...
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