Saltar al contenido

Estructuras de datos en Jitterbit Integration Studio

Introducción

Las estructuras de datos se pueden proporcionar como esquemas durante la configuración de la actividad o pueden ser definidos dentro de la transformación en sí. Cuando se proporcionan estructuras de datos en una actividad, la transformación hereda los esquemas utilizando la actividad como origen o destino en la operación. Una vez que se definen los esquemas de origen y destino de una transformación, se crean asignaciones de transformación entre los esquemas de origen y destino para definir cómo se deben procesar los datos.

Para obtener información sobre cómo resolver ciertos errores de ejecución de operación causados por estructuras de datos, consulte Solución de problemas de operaciones.

Tipos de estructuras de datos

En Harmony, los esquemas de origen y destino pueden utilizar estructuras de datos que se consideran planas o jerárquico.

Estructura plana

Una estructura de datos plana consta de uno o más campos y registros individuales en una estructura bidimensional. Algunos ejemplos son los archivos CSV, los archivos XML simples y las tablas de bases de datos individuales. Una estructura de datos plana también se conoce como estructura de archivo plano.

Example Flat Structure in XML Format
<customer>
    <id>10123</id>
    <name>ABC Co.</name>
    <street>1 Main St.</street>
    <city>Anytown</city>
    <state>NY</state>
    <zip>12345</zip>
</customer>

Estructura jerárquica

Una estructura de datos jerárquica tiene una o más relaciones padre-hijo o anidadas entre campos y registros en una estructura compleja. A veces, a una estructura de datos jerárquica se la denomina estructura relacional, multinivel, compleja de datos o de árbol.

Example Hierarchical Structure in XML Format
<customer>
    <id>10123</id>
    <name>ABC Co.</name>
        <addresses>
            <address>
                <street>1 Main St.</street>
                <city>Anytown</city>
                <state>NY</state>
                <zip>12345</zip>
            </address>
            <address>
                <street>1 Time Square</street>
                <city>New York City</city>
                <state>NY</state>
                <zip>54321</zip>
            </address>
        </addresses>
</customer>

Visualización de estructuras de datos

Las estructuras de datos se muestran en un formato de árbol que se puede expandir y contraer para mostrar el árbol completo o solo una parte de él.

Cada árbol consta de nodos y campos, donde los campos dentro de la estructura de datos de origen se pueden asignar a campos dentro de la estructura de datos de destino.

Los nodos tienen un triángulo de divulgación a la izquierda del nombre del nodo que se utiliza para contraer o expandir el nodo. De forma predeterminada, los nodos se expanden hasta 8 niveles de profundidad para esquemas con 750 nodos o menos y hasta 5 niveles de profundidad para esquemas con más de 750 nodos. Todos los nodos debajo de un nodo de destino se pueden expandir a la vez utilizando la opción del menú de acciones del esquema Expandir todos los nodos debajo de este nodo (consulte Nodos de destino en Modo de mapeo). Si expande o contrae nodos, Integration Studio recuerda el último estado de expansión que estaba utilizando la próxima vez que acceda a la transformación.

Una vez expandidos, los nodos muestran todos los nodos secundarios y campos que contienen. Los nodos pueden considerarse como carpetas con nodos secundarios como subcarpetas. Los campos están contenidos dentro de los nodos y se enumeran con su tipo de datos (boolean, integer, double, binary, string).

Por ejemplo, en la estructura de destino que se muestra a continuación, el nodo json incluye el nodo hijo item, que contiene los campos employeeId, name, y title. El nodo item También contiene el nodo secundario employeeDetails, que contiene los campos salary, isWorking, y status.

estructura de datos de destino

Visualización de campos mapeados

Una asignación de transformación consta de campos o nodos de destino y sus secuencias de comandos correspondientes. Estos secuencias de comandos pueden contener referencias a campos o nodos de origen o a componentes de proyecto, utilizar funciones o contener otra lógica de secuencia de comandos válida. Una asignación no incluye campos de destino que no estén asignados.

Cuando se definen objetos y variables de origen dentro del campo de destino, aparecen como bloques dentro del campo de destino. El campo de destino asignado se muestra con una línea vertical violeta a lo largo del bloque del campo de destino:

objetos de origen del campo de destino

Cuando está en modo de mapeo y tanto un esquema de origen como uno de destino están visibles en la pantalla, una línea gris clara visual muestra la conexión con el objeto de origen cuando pasa el cursor sobre un campo de origen o de destino.

líneas de destino

La línea negra sólida que se muestra en la imagen anterior se explica en la siguiente sección, Nodos de bucle.

El lado de destino de la asignación también indica si un campo tiene valores predeterminados (delineados en rojo en la imagen a continuación) o uniones (delineadas en verde en la imagen a continuación). Por ejemplo, esta transformación inserta datos en una base de datos cuya id Los campos se incrementan automáticamente y cuyos created_at El campo se establece igual a la hora actual de forma predeterminada. También muestra que la tabla secundaria qa_employee Se ha unido en el campo id a su tabla principal. qa_restaurant:

valores predeterminados del campo de destino anotados pp

Si un nodo colapsado contiene asignaciones de campos de destino, ese nodo se muestra en negrita para indicar que contiene asignaciones:

nodo de destino colapsado

Nodos de bucle

Un nodo de bucle es un nodo de origen o destino con valores de datos repetidos, como artículos de línea en una factura o un conjunto de registros de clientes.

Cuando se asignan los campos de nodos de bucle, aparece automáticamente una línea de iterador negra sólida, que indica que el proceso de transformación recorrerá el conjunto de datos de origen. La ubicación de las líneas de iterador generadas depende de la multiplicidad de los nodos de bucle de origen correspondientes.

Una transformación puede tener cero o más líneas de iteración. Cuando hay varias líneas de iteración, la precedencia se da de arriba a abajo en la estructura de destino.

Para alternar la visualización de una línea de iterador individual, haga clic directamente en la forma circular más cercana al nodo de destino:

alternar nodo de bucle

La línea del nodo de bucle individual se convierte en un trozo naranja que, al hacer clic nuevamente, muestra la línea completa:

trozo del nodo de bucle

Ejemplo

Como ejemplo de un mapeo de nodos de bucle, considere la siguiente estructura de fuente jerárquica que contiene un nodo de fuente de nivel superior (item) con campos que proporcionan información sobre una empresa. Un nodo de origen secundario, locationDetails, incluye una matriz (json$item.locationDetails$item.) de objetos con campos para varias ubicaciones de tiendas dentro de una empresa. Tanto el nodo principal como el secundario se consideran nodos de bucle porque los datos pueden contener varios registros de empresas con varios registros de ubicación de tiendas para cada empresa.

Ahora, considere que estos datos se están asignando a una estructura de destino plana, lo que da como resultado un registro para cada ubicación de tienda. A medida que asigna campos, aparece automáticamente una línea de iterador que conecta los nodos de bucle de origen y destino. Esta línea indica que el destino se repetirá tantas veces como conjuntos de datos repetidos haya en el origen o, en este ejemplo, se repetirá cada registro de ubicación de tienda para cada empresa.

nodo de bucle

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 un conflicto de ocurrencia múltiple con la asignación.

Si la estructura de datos de origen es una matriz de múltiples objetos y se asigna a una estructura de datos de destino con un solo objeto, se muestra este cuadro de diálogo:

la fuente de instancia múltiple no se puede asignar a un destino de instancia única

Para utilizar la primera instancia de la fuente en la asignación, seleccione . Esto significa que solo se asignará el primer registro. Por ejemplo, dada la siguiente asignación, solo el primer registro de cliente en la matriz se asigna a la estructura de destino que contiene solo un único cliente. Observe que cada campo de destino asignado ahora contiene un secuencia de comandos como se indica con el icono de secuencia de comandos.

resolución de instancia de nodo de bucle

Cuando cambia al modo de secuencia de comandos para cualquier campo asignado, verá que un #1 Se ha añadido dentro de la ruta del objeto de origen asignado para indicar que se ha asignado la primera instancia.

asignación de instancia

Si no desea que se utilice la primera instancia de la fuente, puede especificar otra lógica mediante las funciones de resolución de instancias (consulte Funciones de instancia).

Normalización de datos

Si está asignando datos de una estructura plana a una estructura jerárquica, es posible que sea necesario normalizar los datos antes de transformarlos.

De forma predeterminada, Harmony utiliza un algoritmo de normalización para construir el árbol de destino. Esto convertirá la estructura plana de la fuente en una estructura de fuente jerárquica que luego se puede asignar a la estructura de destino jerárquica.

En la estructura de destino, el elemento raíz y todos los elementos de instancias múltiples que se encuentran debajo de la raíz se utilizan para crear la estructura de elementos de origen secundarios. Los atributos (o campos) de estos elementos de origen secundarios son elementos de datos planos que luego se utilizan en las asignaciones del elemento de destino correspondiente.

Con la estructura de origen correctamente definida, el proceso de normalización se simplifica para combinar nodos con los mismos padres.

Hay tres opciones para la normalización:

  • Normalización completa: Todos los elementos con el mismo padre y todos los campos se reducen a un solo elemento. (Esta es la opción predeterminada).
  • Normalización parcial: Lo mismo que la normalización completa, excepto que los hijos más bajos no están normalizados.
  • Sin normalización: Cada registro plano crea una rama de elementos; no se realiza ninguna reducción de elementos al crear la estructura fuente jerárquica.

Es posible que la estructura jerárquica contenga un único nodo de instancia. En ese caso, solo se conservará el primer elemento de esta raíz y se ignorarán los registros planos que entren en conflicto con este nodo de datos raíz.

Para desactivar la normalización, configure la variable Jitterbit jitterbit.transformation.disable_normalization a true (vea Variables de Jitterbit de Transformación).

Mapeo de instancias y múltiples

El mapeo de Transformación es el proceso que se utiliza para definir la relación de datos entre las entradas y una salida de datos resultante. Según los tipos de estructura de datos que se utilicen, el mapeo de transformación puede describirse como mapeo de instancias o mapeo múltiple.

Mapeo de instancias

La asignación de instancias describe cuando la asignación de una instancia de destino depende de posiblemente más de una instancia de una fuente. La asignación de instancias puede ser de plano a plano (uno a uno) o de jerárquico a plano (muchos a uno).

Mapeo múltiple

El mapeo múltiple describe el mapeo de dos estructuras de datos jerárquicas o el mapeo de una única estructura plana que es en realidad jerárquica por naturaleza, con sus segmentos inferiores que contienen múltiples conjuntos de valores, como pares nombre/valor. El mapeo múltiple puede ser de jerárquico a jerárquico (de muchos a muchos) o de plano a jerárquico (de uno a muchos).

Ejemplos

Se pueden encontrar ejemplos de situaciones tanto de mapeo de instancias como de mapeo múltiple en la documentación de Design Studio:

Aunque estos ejemplos son para Design Studio, los mismos conceptos se pueden aplicar en Integration Studio.

Para obtener módulos de capacitación práctica que tengan ejemplos de mapeo de archivos XML, de texto y de bases de datos simples y complejos, consulte Introducción a Jitterbit Integration Studio.