Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
alexis_garcia
Creator II
Creator II

Apply map con más de 2 campos

Hola a todos,

tengo una duda y es que quiero unir 2 tablas que comparten un "Id", pero quiero hacerlo con ApplyMap, ya que intento que mi aplicación sea más rápida.

Tengo 2 tablas con el mismo "Id" pero tienen más campos las 2 tablas, puedo hacer ApplyMap?

Intento recargar al hacer ApplyMap y me da error: MAPPING requires 2-column input.

Es que todos los ejemplos que veo tiene que tener una de las tablas solo 2 campos.

Es posible unirlas como comento?

Un saludo y gracias.

1 Solution

Accepted Solutions
jolivares
Specialist
Specialist

En ese caso lo mejor es hacer un join de las dos tablas.  La mejor aplicacion para un applymap es cuando estamos buscando precisamente un valor, por ejemplo una descripcion que esta en otra tabla.

En tu caso lo haria con un join.

View solution in original post

6 Replies
jolivares
Specialist
Specialist

En ese caso lo mejor es hacer un join de las dos tablas.  La mejor aplicacion para un applymap es cuando estamos buscando precisamente un valor, por ejemplo una descripcion que esta en otra tabla.

En tu caso lo haria con un join.

alexis_garcia
Creator II
Creator II
Author

Muchas gracias Juan.

Utilizaré Join en este tipo de tablas, ya que también conseguiré más rapidez.

Por cierto, "Caoncatenate" funciona de la misma forma que "Join" respecto a la rapidez de recarga y demás?

Un saludo y gracias.

Miguel_Angel_Baeyens

Hola Alexis,

Existe una diferencia importante entre ambos métodos:

CONCATENATE simplemente añade una tabla a otra, independientemente de los nombres de campos, contenidos, etc. El resultado es una tabla más grande en registros (contiene los de todas las tablas concatenadas) y en columnas (ídem) aunque los valores para algunas tablas sean nulos porque los campos no existan.

Tabla:

LOAD IDCliente, NombreCliente, DireccionCliente

FROM FicheroClientes.qvd (qvd); // Tiene 100 lineas

CONCATENATE (Tabla) LOAD IDProducto, NombreProducto, DescripcionProducto

FROM FicheroProductos.qvd (qvd); // Tiene 25 líneas

El resultado será una tabla con 6 columnas (las 3 de cada uno) y las 125 filas de ambas (100 de cliente y 25 de producto). Los campos de FicheroProductos tendrán valor nulo en las líneas correspondientes a FicheroClientes y viceversa.

JOIN une dos tablas utilizando campos comunes. De esta forma, la tabla resultante tendrá registros de las dos tablas siempre que los valores en los campos comunes sean idénticos.

Tabla:

LOAD IDCliente, NombreCliente, DireccionCliente

FROM FicheroClientes.qvd (qvd); // Tiene 100 lineas

JOIN (Tabla) LOAD IDFactura, IDCliente, IDProducto

FROM FicheroFacturas.qvd (qvd); // Tiene 2500 líneas

El resultado será una tabla con 5 columnas (ya que IDCliente está en ambas) y 2500 filas (se funden, no se añaden).

Ambas hay que usarlas con cuidado, ya que realizar estas operaciones con tablas grandes impactará en el tiempo de carga.

Miguel

alexis_garcia
Creator II
Creator II
Author

Muchas gracias Miguel.

Ya me ha quedado más claro.

El problema era el dilema de cuándo usar un método u otro, ya que estoy intentando unir las máximas tablas posibles de mi aplicación, ya que hay muchísimos datos y necesito que se reduzca el tiempo de recarga.

Un saludo y gracias.

Miguel_Angel_Baeyens

Si dispones de un servidor con un procesador potente, JOIN será más efectivo. Consume más memoria pero de forma más intensa, es decir, una vez realizado el JOIN esa parte de memoria se libera.

Sin embargo CONCATENATE va incrementando el uso de memoria paulatinamente aunque no es tan intensivo en el uso del procesador.

Ante el mismo reto puedes utilizar ambos y validar los tiempos de respuesta, si el modelo de datos final no altera el resultado de las expresiones.

O dicho de otra forma, conociendo el modelo de datos y lo que quieres obtener con él, se podría decidir qué es lo mejor en cada caso.

Miguel

alexis_garcia
Creator II
Creator II
Author

Perfecto Miguel,

en algún rato libre compararé las distintas formas de hacerlo a ver cuál es mejor y tarda menos tanto al recargar como al moverse por el documento.

Un saludo y muchas gracias por todo.