Componentes de combinación
A veces es necesario combinar datos de dos o más estructuras en base a una condición (p. ej. si el campo A de la primera estructura tiene el mismo valor que el campo B de la segunda estructura). Para este tipo de diseños puede usar un componente de combinación.
Un componente de combinación es un componente de MapForce que permite unir varias estructuras en la asignación de acuerdo con las condiciones definidas por el usuario. Devuelve la asociación (conjunto combinado) de elementos que cumplen con la condición. Las combinaciones son de gran ayuda a la hora de combinar datos de dos estructuras que tienen un campo en común (p. ej. una identidad).
Por ejemplo, en la asignación que aparece más abajo, el componente del medio es un componente de combinación. En este diseño de asignación se combinan dos estructuras XML (una lista de personas y una lista de direcciones). El objetivo es recopilar todos los datos personales de cada persona en un archivo XML de destino. Los campos FirstName y LastName hacen de claves de combinación. Es decir, si FirstName y LastName (secundarios de Person) tienen el mismo valor que FirstName y LastName (secundarios de Address), entonces los datos de la dirección pertenecen a la misma persona y, por tanto, se combinan. Los nodos de la estructura combinada se pueden seguir procesando en un componente de destino (en este caso un archivo XML). La condición de combinación propiamente dicha se define en las propiedades del componente de combinación con el botón Definir condición de combinación (
). Este ejemplo va acompañado de una asignación de muestra y se explica con más detalle en Ejemplo: combinar estructuras XML.

JoinPeopleInfo.mfd
Como puede ver en la imagen, las estructuras de origen y el componente de combinación están conectadas por medio de una conexión de copia total, para reducir la acumulación de elementos en el área de diseño. En general, MapForce crea automáticamente estas conexiones cuando el contexto es relevante (para más información, consulte Conexiones de copia total).
Las estructuras que se deben combinar pueden ser de componentes distintos (como en el ejemplo anterior) o pueden pertenecer al mismo componente. Las estructuras que se deben combinar también pueden ser de tipos distintos (p. ej. una estructura XML y una tabla de BD). Consulte el apartado Combinar datos de base de datos para aprender cómo funciona la combinación en las bases de datos.
Para agregar un componente de combinación:
1.Configure el lenguaje de transformación Built-In (para ello, haga clic en el botón
de la barra de herramientas o utilice el comando de menú Resultados | Motor de ejecución integrado).
2.En el menú Insertar, haga clic en Combinar. También puede hacer clic en el botón Combinar (
) de la barra de herramientas. El componente de combinación aparece en la asignación de datos. De forma predeterminada, admite datos procedentes de dos estructuras, por lo que cuenta con dos entradas de nodes/rows. Si es necesario, puede añadir nuevas entradas a la combinación haciendo clic en el botón Agregar entrada (
), consulte Combinación de tres o más estructuras.

3.Conecte las estructuras que se vayan a unir con los elementos de nodes/rows del componente de combinación.
4.Añada la condición para la combinación (o varias condiciones). Para ello, haga clic con el botón derecho en el componente de combinación y seleccione Propiedades. Las condiciones de combinación también pueden añadirse directamente desde la asignación, conectando el resultado booleano de alguna función al elemento condition del componente de combinación. En determinados casos, cuando se realizan combinaciones entre tablas de una base de datos, MapForce puede crear automáticamente la condición (o las condiciones) de combinación. Para más información, consulte Agregar condiciones de combinación.
Notas:
•Los componentes de combinación son compatibles cuando el lenguaje de destino de la asignación está configurado en Built-In. No se admite la generación de código en C#, C++ o Java.
•Cuando usted valide la asignación, si una estructura no es una fuente de entrada válida o compatible para la combinación, MapForce muestra indicaciones, ya sea inmediatamente en la propia asignación o en la ventana Mensajes (consulte Validar asignaciones).
•Los componentes de combinación no deben conectarse a parámetros de entrada ni a resultados de funciones inline definidas por el usuario. Si existen dichas conexiones, se producirán errores de validación durante la validación de la asignación.
•Cuando conecte componentes de base de datos (tablas o vistas, por ejemplo) a un componente de combinación directamente, en la esquina superior derecha del componente de combinación aparece automáticamente el botón Modo SQL (
). Cuando está habilitado, este botón ofrece funciones especiales de SQL aplicables a la operación de combinación (consulte Combinaciones en Modo SQL).
•El resultado del elemento joined no se puede conectar a otro componente de combinación. No obstante, si fuera necesario, puede conectar un resultado parcial de una combinación con otra.
Diferencias entre componentes de combinación y otros tipos de componentes
En algunos casos se puede conseguir el mismo resultado usando variables o filtros complejos en lugar de componentes de combinación (véase Usar variables y Filtros y condiciones). Sin embargo, a diferencia de otros componentes, los de combinación facilitan la comprensión de la asignación porque permiten distinguir a simple vista qué datos se combinan. Además, si se habilita el modo SQL en el componente de combinación, el rendimiento de la asignación aumenta considerablemente cuando se trata de combinaciones de bases de datos (véase Combinar datos de base de datos).
Agregar un contexto primario
En casos especiales, para poder conseguir un resultado concreto se podrá ofrecer explícitamente un contexto de asignación (el denominado contexto primario) para los datos que están conectados con el componente de combinación. Para agregar un contexto primario, haga clic con el botón derecho en el nodo joined del componente de combinación y seleccione Agregar contexto primario en el menú contextual. A partir de ese momento, el componente de combinación incluirá una entrada nueva llamada parent-context donde podrá conectar el nodo de origen correspondiente. Para más información consulte Ejemplo: cambiar el contexto primario.
El contexto primario es el contexto heredado de un nodo principal. Determina qué datos de origen y resultados intermedios están a disposición de los nodos descendientes. Algunos componentes de procesamiento de datos, entre los que se incluyen las funciones de agregado de la biblioteca core, los componentes de combinación y las variables, proporcionan un parámetro parent-context con el que usted puede influir en el contexto heredado y, en consecuencia, modificar el resultado.