Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
mkcfernandez
Contributor
Contributor

Unir dos tablas de diferentes bases de datos en una tecer tabla

Hola amigos soy nuevo en esto del QV, en la empresa donde trabajo me han pedido crear un modelo el cual debo alimentar de dos diferentes bases de datos a continuación dejo ejemplo de lo que tengo y de el resultado que quiero para ver si pueden apoyarme para hacer dicho modelo

DB1

Tabla1

NumeroEmpleado

Nombre

Apellidos

DB2

Tabla1

IDUsuario

NumeroEmpleado

Tabla2

IDUsuario

Semana

Día

Horas

estas son mis tablas donde la Tbl1 de la DB1 contiene la información que requiero de los usuarios dados de alta en la Tbl1 de la DB2 y lo que quiero es unir dicha información junto con la Tbl2 de la DB2 para obtener lo siguiente:

Nombre     Apellidos     Semana     Día                    Horas    

Carlos       Peña            1823          04-06-2018       9

Carlos       Peña            1823          05-06-2018       9

Carlos       Peña            1823          06-06-2018       7.5

Carlos       Peña            1823          07-06-2018       9

Carlos       Peña            1823          08-06-2018       9

Frank        Garcia          1823          04-06-2018       7

Frank        Garcia          1823          05-06-2018       8

Frank        Garcia          1823          06-06-2018       8

Frank        Garcia          1823          07-06-2018       4

Frank        Garcia          1823          08-06-2018       8

de ante mano muchas gracias por su colaboración

12 Replies
bertinabel
Creator
Creator

Que tal Mikel,

     La solución a lo que comentas, es unir la tablas mediante Joins. Te adjunto el documento de Qlik donde realice la simulacion de tu problema con la solución.

Tabla1_BD1:

LOAD * Inline [

NumeroEmpleado,Nombre,Apellidos

1001,Jose,Perez Lopéz

1102,Juan, Castro Gonzalez

1201,Pedro, Garcia Garcia

];

Tabla1_DB2:

LOAD * Inline [

IDUsuario,NumeroEmpleado

5529,1001

5530,1102

5531,1201

];

Tabla2_DB2:

LOAD * Inline [

IDUsuario, Semana, Día,Horas

5529,1820,04/06/2018,9

5529,1820,05/06/2018,7.5

5530,1820,06/06/2018,8

5530,1820,07/06/2018,7

5531,1820,08/06/2018,7

5531,1820,09/06/2018,6

];

Left Join (Tabla1_BD1)

LOAD

NumeroEmpleado,

IDUsuario

Resident Tabla1_DB2;

DROP Table Tabla1_DB2;

Left Join (Tabla1_BD1)

LOAD

IDUsuario,

Semana,

Día,

Horas

Resident Tabla2_DB2;

DROP Table Tabla2_DB2;

Espero te sea de ayuda.

Saludos.

mkcfernandez
Contributor
Contributor
Author

gracias amigo, haré las pruebas y comento el resultado.

que tengas un excelente fin de semana

mkcfernandez
Contributor
Contributor
Author

Hola Bertin Abel Martinez Plata ya realicé las pruebas y me marca un error al recargar el script me dice que el NumeroEmpleado en el primer Join no se encuentra el campo

bertinabel
Creator
Creator

Que tal Mikel,

    ¿El Script que te marca error es el del código que te compartí o el que estas implementando?

     Si es en tu implementación podras compartirme un documento de Qlik solo con tu implementación o en un archivo plano compartirme esa parte del codigo para ayudarte a encontrar el problema.

Saludos.

mkcfernandez
Contributor
Contributor
Author

SQL SELECT *

FROM "TS".dbo.Timesheets;

SQL SELECT *

FROM "TS".dbo.Users;

SQL SELECT *

FROM "TS".dbo.StatusTS;

SQL SELECT *

FROM "TS".dbo.BranchOffices;

//-------- Start Multiple Select Statements ------

SQL SELECT EMPLOYID

FROM "TS01".dbo.UPR00100;

SQL SELECT FRSTNAME

FROM "TS01".dbo.UPR00100;

SQL SELECT LASTNAME

FROM "TS01".dbo.UPR00100;

//-------- End Multiple Select Statements ------

UsuariosDy:

LOAD * Inline [

EMPLOYID,FRSTNAME,LASTNAME

];

UsuariosTS:

LOAD * Inline [

Id,EmployID

];

Timesheets:

LOAD * Inline [

UserID,WeekCapture,DayCapture,CapturedHours

];

Left Join(UsuariosDy)

LOAD

EMPLOYID,

Id

Resident UsuariosTS;

DROP Table UsuariosTS;

Left Join (UsuariosDy)

LOAD

UserID,

WeekCapture,

DayCapture,

CapturedHours

Resident Timesheets;

DROP Table Timesheets;

bertinabel
Creator
Creator

Que tal, Mikel

     La causa de tu error radica en tu tabla UsuariosTS, los nombres de los campos no coinciden con el de las demás tablas es por eso que no se pueden usar como campos llave en un Left Join.

   

     Replicando tu error es el siguiente:

     UnirTablas_Err1.JPG

La forma de solucionarlo es renombrar los campos de la tabla puente que en este caso es "UsuariosTS"  yo lo hice usando una carga precedente.

     A continuacion como queda el script con la modificación que te comento:

UsuariosDy:

LOAD * Inline [

EMPLOYID,FRSTNAME,LASTNAME

101,JUAN,PEREZ

102,PEDRO,LOPEZ

];

////////Aqui es donde uso la carga precedente para renombar los campos ///////////////////////////////////

UsuariosTS:

LOAD

Id AS UserID,

EmployID AS EMPLOYID

;

LOAD * Inline [

Id,EmployID

501,101

502,102

];

Timesheets:

LOAD * Inline [

UserID,WeekCapture,DayCapture,CapturedHours

501,520,04/07/2018,9

502,520,05/07/2018,8

];

 

Left Join(UsuariosDy)

LOAD

EMPLOYID,

UserID

Resident UsuariosTS;

DROP Table UsuariosTS;

Left Join (UsuariosDy)

LOAD

UserID,

WeekCapture,

DayCapture,

CapturedHours

Resident Timesheets;

DROP Table Timesheets;

Espero te sea de ayuda.

Saludos.

mkcfernandez
Contributor
Contributor
Author

Hola amigo, ahora si cargó sin problemas pero no me trae datos jajaja creo que el QV no es para mí

bertinabel
Creator
Creator

Que tal, Maikel

     Jajaja, el secreto esta en ser paciente todos empezamos sin saber nada de QV.

     Ahora bien con tu problema, me es dificil ayudarte sin ver como estan tus datos, hay forma de que puedas compartirme tu documento de Qlik con un segmento de tus datos?

Saludos.

mkcfernandez
Contributor
Contributor
Author

como puedo compartirlo acá en el foro ???