Altova MapForce 2027 Professional Edition

Este ejemplo muestra cómo unir varias tablas de una base de datos con el fin de extraer datos y generarlos en un único informe en formato CSV. La base de datos utilizada en este ejemplo se llama Nanonull.sqlite y está disponible en DocExamples. Esta base de datos almacena información sobre una empresa ficticia (pedidos, productos, usuarios y direcciones de los usuarios). Como en cualquier otra base de datos relacional, la información de esta base de datos está normalizada y repartida en varias tablas. Por ejemplo, la tabla users almacena datos personales de los usuarios (su nombre, apellido y correo electrónico). La base de datos también almacena información sobre los productos solicitados por los usuarios, en dos tablas diferentes: orders (que incluye el identificador único del pedido y la hora en la que se realizó el pedido) y orderedproducts (que incluye una lista de productos pedidos y su cantidad). Además, el nombre de los productos se almacena en una tabla llamada products.

 

El objetivo de nuestra asignación de datos será producir un informe basado en los datos extraídos de varias tablas y así conocer quién pidió ciertos productos, cuándo y en qué cantidad. Para alcanzar este objetivo, debemos seguir estos pasos:

 

1.En el menú Insertar haga clic en el comando Base de datos.

2.Cuando llegue el momento de seleccionar un tipo de base de datos, haga clic en la opción SQLite y después en el botón Siguiente.

3.Navegue hasta la base de datos Nanonull.sqlite que mencionamos al principio y haga clic en Conectarse.

4.En el cuadro de diálogo que aparece seleccione las tablas orderedproducts, orders, products y users y haga clic en Aceptar.

mf_join_multiple1

5.Añada un componente de combinación a la asignación y cree cuatro elementos de nodes/rows haciendo clic en el botón Agregar entrada ( gui_add_function_parameter ).

6.Conecte las cuatro tablas del componente de base de datos con los elementos de entrada del componente de combinación.

mf_join_multiple2

Nota: Otro método alternativo sería conectar la tabla orderedproducts al componente de combinación, después la tabla orders (la que tiene anidada y no la que está al mismo nivel) y así sucesivamente hasta que todas las tablas combinadas estén anidadas bajo la misma tabla «root»(véase Gestionar relaciones de BD). El resultado de la asignación sería idéntico al que se obtendría al combinar las tablas de esta forma. La diferencia radica en que, en este ejemplo, las condiciones de combinación se crean manualmente, mientras que, en el escenario alternativo, MapForce crearía dichas condiciones de forma automática. Para ver un ejemplo de cómo combinar tablas sin tener que definir manualmente las condiciones de combinación, consulte Ejemplo: Combinar tablas en modo SQL. En la siguiente ruta se encuentra disponible otra estructura en la que todas las tablas combinadas se encuentran bajo la misma tabla «root»: <Documentos>\Altova\MapForce2027\MapForceExamples\DB_Denormalize.mfd.

 

En este ejemplo, las tablas conectadas al componente de combinación siguen este orden:

 

1.orderedproducts

2.orders

3.products

4.users

 

Este orden influye en la forma en que se muestran las estructuras correspondientes en el cuadro de diálogo Definir condición de combinación, al hacer clic en el botón Definir condición de combinación ( mf_ic_join_key ). Es decir, la primera tabla (orderedproducts) aparece por defecto bajo Structure 1 y la tabla inmediatamente posterior a ella (orders) aparece bajo Structure 2.

mf_join_multiple3

Para definir la primera condición de combinación haga clic en el elemento order_id del panel izquierdo y en el elemento id del panel derecho. Ahora los campos orderedproducts.order_id y orders.id están vinculados:

mf_join_multiple4

Hasta ahora hemos combinado solamente dos tablas. Para definir condiciones de combinación que comprendan una tercera tabla es necesario seleccionar la tabla correspondiente en la lista desplegable situada sobre el panel derecho. En este caso, el panel izquierdo muestra todas las tablas que aparecen antes de ella en el componente de combinación. Por ejemplo, si seleccionamos products en el panel derecho, el panel izquierdo presentará orderedproducts y orders (porque estas dos tablas aparecen antes de products en el componente de combinación). Ahora puede vincular campos de la tabla products con campos de tablas que la preceden (en este caso, orderedproducts.product_id y products.id).

mf_join_multiple5

Para unir una cuarta tabla (users), seleccione la tabla users en la lista desplegable. Ahora puede vincular los campos orders.user_id y users.id.

mf_join_multiple6

Ahora que todas las condiciones de combinación están definidas, podremos crear asignaciones de datos entre los elementos de componente de combinación y los del componente de destino. Para terminar la asignación, añada un componente CSV (véase Archivos CSV y de texto) y conecte los elementos del componente de combinación al componente CSV de destino, tal y como se ilustra a continuación:

mf_join_multiple7

Esta asignación de datos genera un informe en formato CSV a partir de las cuatro tablas que participan en la combinación y que incluye:

 

•el identificador del pedido (procedente de la tabla orderedproducts)

•la cantidad de artículos pedidos (procedente de la tabla orderedproducts)

•la hora a la que se realizó el pedido (procedente de la tabla orders)

•el nombre del producto que se pidió (procedente de la tabla products)

•el nombre y el apellido del usuario que hizo el pedido (procedente de la tabla users)

 

Todas las tablas de este ejemplo están combinadas con el modo de combinación interna. Para más información sobre cómo cambiar el modo de combinación a combinación exterior izquierda, consulte Cambiar el modo de combinación.

© 2020-2026 Altova GmbH