Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

JOIN (LOAD)

Hola a todos, soy algo novato en esto y a ver si alguno podría echarme una mano.

Tengo 3 tablas:

FACTURAS:

Date

Invoice_ID

Status

Customer_ID

Importe

CUSTOMER1:

Customer_ID

Entity

Channel

CUSTOMER2:

Invoice_ID

Customer_ID

Entity

Channel

La tabla FACTURAS se une con CUSTOMER1 a través del “Customer_ID” para incorporar los campos “Entity” y “Channel” a la primera tabla.

Esto posteriormente se tiene que unir con la tabla CUSTOMER2 con una lógica. La unión debe ser por el campo “Invoice_ID”. Cuando encuentre esta unión, los campos “Entity” y “Channel” deberán aparecer en la tabla FACTURAS con los valores que aparecen en CUSTOMER2 y no en CUSTOMER1.

Muchas gracias de antemano

Un saludo!

7 Replies
jvitantonio
Luminary Alumni
Luminary Alumni

FACTURAS:

LOAD

Date

Invoice_ID

Status

Customer_ID

Importe

FROM FACTURAS.qvd (qvd);

inner join (FACTURAS)

LOAD

Customer_ID

Entity

Channel

FROM CUSTOMER1.qvd (qvd);

Drop fields Entity, Channel;

inner join (FACTURAS)

LOAD

Invoice_ID

Customer_ID   AS Customer_ID_2

Entity

Channel

FROM CUSTOMER2.qvd (qvd);

ramoncova06
Partner - Specialist III
Partner - Specialist III

que pasa cuando no exista una unión entre CUSTOMER2 y FACTURAS, quieres seguir usando los campos de CUSTOMER1 ?

handry_orozco
Partner - Contributor III
Partner - Contributor III

Facturas_Tmp1

Date

Invoice_ID

Status

Customer_ID

Importe

Inner Join

Customer_ID

Entity

Channel

//**********************************************************

NoConcatenate

Facturas_Tmp2:
Load Date

        Invoice_ID

        Status

        Customer_ID

        Entity

        Channel

        Importe

Resident Facturas_Tmp2;
Drop Table

Inner Join

     Invoice_ID

     Customer_ID

     Entity

     Channel

//*********************************************************

Noconcatenate

Factura:

Load Date

         Invoice_ID

         Status

         Customer_ID

         Entity

         Channel

         Importe

Resident  Facturas_Tmp2;
Drop Table Facturas_Tmp2

Not applicable
Author

Gracias a todos!

Creo que con esto ya puedo ir tirando...

alex_millan
Creator III
Creator III

Hola alexjalo,

si en un momento dado puede que tengas datos de Entity o Channel sólo en CUSTOMER1 o en CUSTOMER2 o en ambos, es mejor que te asegures de no borrar los datos de CUSTOMER1 que cargas.

Así, yo el script que utilizaría sería este (te pongo el script con algunos datos en INLINE para que así puedas probar cómo funciona):

TEMP_FACTURAS:

LOAD * INLINE [

    Date, Invoice_ID, Status, Customer_ID, Importe

    01/01/2015, 000001, A, A00000001, 500

    02/01/2015, 000002, A, A00000002, 600

];

Left join(TEMP_FACTURAS)

LOAD * INLINE [

  Customer_ID, Entity, Channel

  A00000001, Alpha, 1

  A00000002, Beta, 2

  A00000003, Omega, 3

];

Left join(TEMP_FACTURAS)

LOAD Invoice_ID, Entity As Entity2, Channel As Channel2;

LOAD * INLINE [

  InvoiceId, Entity, Channel

  000002, Alpha, 1

  000005, Gamma, 4

];

FACTURAS:

LOAD

  Date,  Invoice_ID, Status, Customer_ID, Importe,

  If(IsNull(Entity2),Entity, Entity2) As Entity,

  If(IsNull(Channel2), Channel, Channel2) As Channel

RESIDENT TEMP_FACTURAS;

Drop table TEMP_FACTURAS;

Espero que te sea útil.

Un saludo

Not applicable
Author

Muchisimas gracias Alex

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola alexjalo:

Entiendo que lo has resuelto, marca como correcta la respuesta que consideres apropiada y como útiles las que lo hayan sido; de esta forma cierras el hilo.

Por otra parte, revisa el documento JOIN sample que publiqué en su momento, te ayudará a entender todas las posibilidades del JOIN

Saludos,

Joaquín