Nodos de bucle en transformaciones en Jitterbit Integration Studio
Introducción
Nodo de bucle las líneas del iterador, que indican los nodos de origen y destino en cuyos campos mapeados iterará una transformación, se generan automáticamente durante el proceso de mapeo, ya sea al usar automapping o al [asignar manualmente objetos de origen a campos de destino](/es/integration-studio/design/transformations/mapping/source-objects`Normalmente, la generación automática de nodos de bucle durante el mapeo es adecuada para el conjunto de datos. Sin embargo, cuando los datos son tales que existen múltiples conjuntos de valores repetidos (o múltiples nodos de bucle), es posible que sea necesario definir manualmente un nodo de bucle para forzar el bucle de los datos en un nodo diferente.
En ciertas situaciones, un campo de origen mapeado puede tener una línea de iterador encima, configurada para generar nuevos registros en un nivel del destino desde un nivel inferior del origen. Esta configuración de mapeo es válida, pero podría no generar los datos deseados en el destino. En este caso, podría ser necesario ajustar el mapeo manualmente.#mismatched
).
También puedes, si es necesario, eliminar nodos de bucle, tanto los generados automáticamente como los definidos manualmente.
Definir nodos de bucle
Al usar automapping los nodos de bucle se generan automáticamente.
Los nodos de bucle también se pueden definir manualmente en los nodos de destino que cumplan ambas condiciones:
- La cardinalidad del nodo objetivo debe ser
0+
o1+
No debe haber asignaciones en campos hoja directos dentro del nodo de destino.
Además, la cardinalidad del nodo de origen utilizado para crear el nodo de bucle de destino debe ser 0+
o 1+
Para definir un nodo de bucle manualmente, en modo de mapeo, arrastra un nodo de origen calificado a un nodo de destino calificado:
Al soltar el nodo de origen sobre el de destino, aparece un menú. Seleccione la opción Definir nodo de bucle.
El nodo de bucle ya está definido y se muestra la línea del iterador, que indica cómo la transformación recorrerá el conjunto de datos de origen. (La línea se muestra incluso si aún no hay asignaciones directas de hojas en los campos bajo el nodo). Complete la asignación de los campos bajo el nodo de bucle como de costumbre:
Los nodos colapsados que contienen asignaciones de nodos de bucle se muestran con una línea de iterador punteada. Haga clic en el triángulo desplegable. Para expandir los nodos secundarios hasta encontrar el nodo de bucle:
Ajustar manualmente los nodos de bucle generados automáticamente
Una vez generados automáticamente los nodos de bucle, es posible que deba ajustarlos manualmente. En el siguiente ejemplo, una transformación de solicitud proporciona filtros para usar en una actividad de búsqueda de HubSpot para consultar registros de la empresa. A continuación, mostramos primero el resultado al usar la función generada automáticamente nodo de bucle y luego muestra cómo cambia la salida cuando el nodo de bucle se redefine manualmente.
Generación automática de nodos de bucle
Después del mapeo automático y la generación automática de un nodo de bucle, el mapeo de transformación muestra los datos en bucle en el segundo objetivo. item
nodo:
Al procesar la asignación anterior con los datos de entrada a continuación, se obtiene esta salida, que simplifica la estructura de entrada en una única lista de filtros:
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
}
]
},
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
},
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
Definición manual de nodo de bucle
Para cambiar el nodo en el que se repiten los datos, arrastre el segundo nodo de la fuente. item
nodo en el primer objetivo item
Nodo y seleccione Definir nodo de bucle:
Ahora vemos la línea del iterador del nodo de bucle tanto en el primer como en el segundo nodo del objetivo. item
nodos:
Al procesar la asignación anterior con los mismos datos de entrada que se usaron en la generación automática de nodos de bucle, se obtiene la salida deseada, que conserva la estructura de entrada:
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
}
]
},
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
}
]
},
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
Ajustar manualmente una asignación en nodos de bucle de origen y destino no coincidentes
Un campo de origen mapeado puede tener una línea de iterador encima, configurada para generar nuevos registros en un nivel del destino desde un nivel inferior del origen (también indicado con un icono de información). Junto al nodo de origen). Esta configuración de mapeo es válida, pero podría no generar los datos deseados en el nodo de destino.
Puede ajustar manualmente el mapeo si alguna de estas opciones se cumple en su caso:
- No desea crear valores duplicados en registros separados en el archivo de destino.
- No desea omitir ningún valor de los registros en el archivo de destino (debido a la falta de un registro secundario).
- Tiene datos de origen donde el registro secundario deseado está en un índice constante o se puede encontrar mediante un valor de búsqueda en la matriz de registros secundarios.
- No necesita valores de ningún otro registro secundario en la matriz de registros secundarios.
Las siguientes subsecciones explican un caso de uso donde se requieren ajustes de mapeo para conservar los valores de los registros de origen en el archivo de destino. Esta animación ofrece una descripción general de los pasos que se detallan a continuación:
En este escenario, los esquemas de origen y destino tienen las siguientes características:
Origen | Destino |
---|---|
|
|
Generación automática de nodos de bucle
A medida que empezamos a mapear campos (como Name
) desde el nodo de origen de nivel superior hasta el nodo de destino de nivel superior, se genera automáticamente una línea iteradora de nodo de bucle desde el nodo de matriz de cliente/artículo de nivel superior de origen hasta el nodo de matriz de cliente/plano de destino. Esto indica que por cada nuevo registro de cliente en el origen, se generará un nuevo registro de cliente en el destino:
Cuando asignamos el primer campo en el nodo de dirección de origen repetitivo (Street
) al campo de dirección de destino correspondiente (street
), se muestra un mensaje que indica que se generarán nuevos registros de destino desde un nivel inferior en el origen:
Al hacer clic en Confirmar, el extremo de origen de la línea del iterador del bucle se mueve automáticamente desde el nodo de la matriz de clientes/artículos de nivel superior hasta el nodo de la matriz de direcciones/artículos anidada (también indicado con un icono de información). Junto al nodo de origen).
En este ejemplo, esto significa que por cada nuevo registro de dirección en el origen, se generará un nuevo registro de cliente en el destino:
Esto hará que aparezca un único registro de cliente de origen en el archivo de destino por cada dirección de la matriz de direcciones de origen de ese cliente. Cada registro de cliente tendrá los mismos valores de campo de nivel superior, con valores únicos en los campos de dirección. Por ejemplo, si el primer registro de cliente de origen contiene dos direcciones, el de destino contendrá dos registros de cliente: uno con la primera dirección y otro con la segunda.
Importante
Con la generación automática de nodos de bucle en este escenario, un registro de cliente de origen sin direcciones no generará un registro de cliente de destino.
Mapa desde una fuente de múltiples instancias a un destino de instancia única
Cuando el nodo de bucle de destino generado depende de más de un nodo de bucle de origen, es posible que deba resolver una discrepancia de ocurrencia con la asignación.
Si la estructura de datos de origen es una matriz multiobjeto y se asigna a una estructura de datos de destino con un solo objeto, se muestra este cuadro de diálogo:
Para usar la primera instancia de la fuente en la asignación, seleccione Sí para insertar automáticamente un símbolo de almohadilla. (#
)En la ruta de referencia del elemento de datos. Esto significa que solo se asignará el primer registro. Para un ejemplo completo, consulte Estructuras de datos.
Si no desea que se utilice la primera instancia de la fuente, puede especificar las instancias manualmente (vea a continuación) u otra lógica que utilice funciones de resolución de instancias (vea Funciones de instancia)
Ajuste manual del mapeo
En el ejemplo, no queremos perder ningún registro de clientes por falta de una dirección, por lo que debemos ajustar manualmente la asignación a nivel de campo de cada matriz secundaria. Al ajustar cada asignación, la línea del iterador del nodo de bucle generada se desplaza automáticamente a la ubicación correcta para el resultado objetivo deseado (según el ajuste de la asignación).
Para ajustar la asignación de cada campo objetivo en la matriz secundaria (por ejemplo, street
), agregamos un símbolo de almohadilla seguido de un entero a la matriz de direcciones/elementos en el secuencia de comandos de mapeo. Al agregar el #1
La referencia devuelve el primer elemento de una matriz, lo que genera la creación de un único registro de cliente en el destino por cada registro de cliente en el origen. Con esta configuración, cada registro de cliente creado en el destino contiene solo la primera dirección de la matriz de direcciones del registro de cliente de origen; las direcciones restantes no se transfieren al destino.
Consejo
Este ejemplo utiliza la sintaxis hash descrita en Notación de ruta de referencia.
Para devolver el segundo elemento o los subsiguientes del array, especifique #2
, #3
, y así sucesivamente. El FindValue
función también se puede usar para buscar un valor en una matriz y devolver el campo relacionado. Por ejemplo, el secuencia de comandos de mapeo para el objetivo country
El campo podría basarse en una Type
de Billing
:
<trans>
FindValue("Billing", json$item.Addresses$item#.Type$, json$item.Addresses$item#.Country$)
</trans>
Tenga en cuenta que al usar Funciones de instancia, el símbolo de almohadilla se inserta automáticamente cuando sea necesario.
Después de añadir la referencia del artículo (#1
) en el secuencia de comandos de mapeo de campos, la línea del iterador del nodo de bucle regresa automáticamente al nodo de la matriz de cliente/artículo de nivel superior de origen. Esto indica que por cada nuevo registro de cliente en el origen, se generará un nuevo registro de cliente en el destino:
A medida que mapeamos campos adicionales en la matriz secundaria, la línea del iterador del nodo de bucle regresa a su posición original. El proceso de agregar la referencia del elemento (#1
) debe repetirse como se indicó anteriormente para cada mapeo a nivel de campo en la matriz.
Eliminar un nodo de bucle y asignaciones
Las opciones para eliminar un nodo de bucle definido manualmente o para eliminar cualquier nodo de bucle y sus asignaciones están disponibles dentro del menú de acciones de un nodo.
Desde cualquiera de los dos modo de mapeo o modo secuencia de comandos, pase el cursor sobre el nombre de un nodo y haga clic en el ícono del menú de acciones para abrir el menú de acciones. En el menú, seleccione una de estas opciones para eliminar la asignación:
Elemento del menú | Descripción |
---|---|
![]() | Eliminar nodo de bucle elimina la definición de nodo de bucle. Esta acción solo está disponible en nodos que tienen un nodo de bucle definido manualmente. Para eliminar una definición de nodo de bucle en un nodo de bucle generado automáticamente, elimine todas sus asignaciones de hoja directas como se describe en Nodos de destino en Modo de mapeo. Nota Si elimina todas las asignaciones directas de hojas de un nodo de bucle definido manualmente, la definición del nodo de bucle aún existe. |
![]() | Eliminar nodo de bucle y asignaciones elimina la definición de nodo de bucle debido a asignaciones que son hojas secundarias directas asociadas con el nodo de bucle, y elimina esas asignaciones. Cualquier otra asignación dentro de los nodos de bucle secundarios debajo del nodo de bucle principal se conserva, y el nodo conserva su definición de nodo de bucle si se asigna al menos un nieto. Esta acción solo está disponible en nodos que tienen un nodo de bucle definido (ya sea manualmente o por generación automática). |