Saltar al contenido

Estructuras de Datos

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 sí mismo. 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 definidos los esquemas de origen y de destino de una transformación, se crean asignaciones de transformación entre los esquemas de origen y de destino para definir cómo se deben procesar los datos.

Tipos de Estructura de Datos

En Harmony, los esquemas de origen y de 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. Los ejemplos incluyen archivos CSV, archivos XML simples y tablas de bases de datos únicas. 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 Jerarquica

Una estructura de datos jerárquica tiene una o más relaciones padre-hijo o anidadas entre campos y registros en una estructura compleja. Una estructura de datos jerárquica a veces se denomina estructura relacional, multinivel, compleja datos o á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 desplegable 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 usando 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, Cloud Studio recuerda el último estado de expansión que estaba usando la próxima vez que acceda a la transformación.

Una vez expandidos, los nodos muestran los campos y nodos secundarios contenidos. Los nodos pueden considerarse 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 hijo employeeDetails, que contiene los campos salary, isWorking, y status.

estructura de datos de destino

Visualización de Campos Asignados

Un mapeo 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 del 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 los objetos de origen y las variables se definen dentro del campo de destino, aparecen como bloques dentro del campo de destino. El campo objetivo mapeado se muestra con una línea vertical violeta a lo largo de la izquierda del bloque del campo objetivo:

objetos de origen del campo de destino

Cuando tanto un esquema de origen como un esquema de destino están visibles en la pantalla y está en modo de mapeo, una línea visual muestra la conexión con el objeto de origen. Pase el cursor sobre un campo de destino asignado para mostrar una línea gris claro que conecta desde los objetos de origen utilizados en la asignación hasta el campo de destino asignado:

líneas objetivo

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

El lado de destino del mapeo también indica si un campo tiene valores predeterminados (delineados en rojo en la imagen a continuación) o combinaciones (delineadas en verde en la imagen a continuación). Por ejemplo, esta transformación inserta datos en una base de datos cuyo id Los campos se incrementan automáticamente y 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 contraído contiene asignaciones de campos de destino, ese nodo se muestra en negrita para indicar que contiene asignaciones:

nodo objetivo colapsado

Nodos de Bucle

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

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

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

Para alternar la visualización de una línea de iterador individual, haga clic directamente en la forma del círculo 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:

stub de nodo de bucle

Ejemplo

Como ejemplo de asignación de nodos de bucle, considere la siguiente estructura de origen jerárquica que contiene un nodo de origen de nivel superior (item) con campos que proporcionan información sobre una empresa. Un nodo fuente hijo, locationDetails, incluye una matriz (json$item.locationDetails$item.) de objetos con campos para múltiples 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 empresa con varios registros de ubicación de tienda para cada empresa.

Ahora considere que estos datos se asignan a una estructura objetivo 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 iteradora que conecta los nodos del bucle de origen y de 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

Asignación de un Origen de Instancias Múltiples 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 está asignando a una estructura de datos de destino con un solo objeto, se muestra este cuadro de diálogo:

el origen de varias instancias no se puede asignar a un destino de una sola instancia

Para utilizar la primera instancia de la fuente en la asignación, seleccione . Esto significa que sólo 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 cliente. Observe que cada campo de destino asignado ahora contiene un secuencia de comandos como se indica con el icono de secuencia de comandos 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 #1 se ha agregado dentro de la ruta del objeto de origen asignado para indicar que la primera instancia está asignada.

mapeo de instancias

Si no desea que se utilice la primera instancia de la fuente, puede especificar otra lógica usando 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 del origen en una estructura de origen 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 bajo 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 al 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. (Este es el valor predeterminado).
  • 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 deshabilitar la normalización, configure la variable Jitterbit jitterbit.transformation.disable_normalization a true (vea Variables de Jitterbit de Transformación).

Instancia y Mapeo Múltiple

El mapeo de Transformación es el proceso utilizado para definir la relación de datos entre las entradas y la salida de datos resultante. Dependiendo de 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

El mapeo de instancias describe cuándo el mapeo de una instancia de destino depende posiblemente de más de una instancia de una fuente. El mapeo de instancias puede ser plano a plano (uno a uno) o jerárquico a plano (varios 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 en realidad es de naturaleza jerárquica, con sus segmentos inferiores que contienen múltiples conjuntos de valores, como pares de nombre/valor. El mapeo múltiple puede ser jerárquico a jerárquico (varios a muchos) o plano a jerárquico (uno a muchos).

Ejemplos

Se pueden encontrar ejemplos de situaciones para mapeo de instancias y múltiples en la documentación de Design Studio:

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

Para módulos de capacitación práctica que tienen ejemplos de mapeo de bases de datos, texto y archivos XML simples y complejos, consulte Introducción a Harmony Cloud Studio.