Saltar al contenido

Nodos de Bucle

Introducción

Nodo de bucle Las líneas del iterador, que indican los nodos de origen y destino en cuyos campos mapeados se iterará una transformación, se generan automáticamente durante el proceso de mapeo, ya sea cuando se usa automapping o al asignar manualmente objetos de origen a campos de destino.

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 hay múltiples conjuntos de valores de datos repetidos (o múltiples nodos de bucle), es posible que deba definir manualmente un nodo de bucle para forzar que los datos se repita en un nodo diferente.

En ciertas situaciones, un campo de origen mapeado puede tener una línea de iterador encima que está configurada para generar nuevos registros en un nivel en el destino desde un nivel inferior en el origen. Esta configuración de mapeo es válida, pero puede no generar los datos deseados en el destino. En este caso, es posible que deba ajustar el mapeo manualmente.

También puedes, si es necesario, eliminar nodos de bucle, tanto los que se han generado automáticamente como los que se han definido manualmente.

Definir Nodos de Bucle

Al utilizar mapeo automático, 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 estas dos condiciones:

  • La cardinalidad del nodo de destino debe ser 0+ o 1+.
  • No debe haber asignaciones en campos de hoja directos dentro del nodo de destino.

Además, la cardinalidad del nodo de origen que se utiliza para crear el nodo de bucle de destino debe ser 0+ o 1+.

Para definir un nodo de bucle manualmente, en modo de mapeo, arrastre un nodo de origen calificado a un nodo de destino calificado:

drop node loop gif

Al colocar el nodo de origen sobre el nodo de destino, aparece un menú. Seleccione la opción Definir nodo de bucle.

Ahora se define el nodo de bucle y se muestra la línea del iterador, que indica cómo se repetirá la transformación en el conjunto de datos de origen. (La línea se muestra incluso si todavía no hay asignaciones de hojas directas en los campos debajo del nodo). Complete la asignación de los campos debajo del nodo de bucle como de costumbre:

nodo de caída define nodo de bucle resultado

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:

línea de iterador de nodo colapsado

Ajustar Manualmente los Nodos de Bucle Generados Automáticamente

Una vez que se generan 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 cuando se utiliza el generado 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 datos en bucle en el segundo nodo del objetivo. item nodo:

resultado del nodo de bucle de mapa automático

Cuando se procesa la asignación anterior utilizando los datos de entrada que se indican a continuación, se obtiene este resultado, que aplana la estructura de entrada en una única lista de filtros:

Input
{
  "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"
        }
      ]
    }
  ]
}
Output
{
  "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 encuentran los datos en bucle, arrastre el segundo nodo de la fuente item nodo en el primer objetivo item nodo y seleccione Definir nodo de bucle:

drop node define loop node change gif

Ahora vemos la línea del iterador del nodo de bucle tanto en el primer como en el segundo nodo del objetivo. item nodos:

eliminar nodo definir bucle nodo cambiar resultado

Cuando se procesa la asignación anterior utilizando los mismos datos de entrada que se utilizaron en la generación automática de nodos de bucle, se obtiene la salida deseada, que mantiene la estructura de entrada:

Input
{
  "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"
        }
      ]
    }
  ]
}
Output
{
  "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 que esté configurada para generar nuevos registros en un nivel en el destino desde un nivel inferior en el origen (también indicado con un ícono de información). junto al nodo de origen). Esta configuración de mapeo es válida, pero puede no generar los datos deseados en el destino.

Es posible que desee ajustar manualmente el mapeo si alguna de estas situaciones es verdadera para su caso de uso:

  • 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 un registro secundario faltante).
  • 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 recorren 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 proporciona una descripción general de los pasos que se detallan a continuación:

descripción general del nodo de bucle

En este escenario, los esquemas de origen y destino tienen estas características:

Origen Destino
  • El archivo de origen contiene registros de clientes.
  • El nodo de nivel superior es un 0+ Nodo de matriz de cliente/artículo que contiene todos los registros de origen.
  • Cada cliente tiene un 0+ direcciones/nodo de matriz de elementos que puede contener múltiples direcciones.
  • El archivo de destino recibe registros de clientes.
  • El nodo de nivel superior es un 0+ nodo de matriz plana/de cliente para almacenar los registros de origen entrantes.
  • Cada cliente tiene un único conjunto de campos de dirección, sin matrices anidadas en el destino.

configuración del nodo de bucle

Generación Automática de Nodos de Bucle

A medida que comenzamos a mapear campos (como Name) desde el nodo de origen de nivel superior al nodo de destino de nivel superior, se genera automáticamente una línea de iterador de nodo de bucle desde el nodo de matriz de cliente/artículo de nivel superior de origen hasta el nodo de matriz plana/cliente de destino. Esto indica que por cada nuevo registro de cliente en el origen, se generará un nuevo registro de cliente en el destino:

nodo de bucle automático 1

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 para indicar que se generarán nuevos registros de destino desde un nivel inferior en la fuente:

iterador en proceso de reconfiguración

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 artículos/clientes de nivel superior hasta el nodo de la matriz de artículos/direcciones anidadas (también indicado con un ícono de información) junto al nodo de origen).

Para este escenario de ejemplo, esto significa que por cada nuevo registro de dirección en el origen, se generará un nuevo registro de cliente en el destino:

nodo de bucle automático 2

Esto dará como resultado que aparezca un único registro de cliente de origen en el archivo de destino una vez por cada dirección en la matriz de direcciones de origen para 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, entonces el de destino contendrá dos registros de cliente: uno con la primera dirección y otro con la segunda dirección.

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.

Ajuste Manual del Mapeo

Usando el escenario de ejemplo, no queremos perder ningún registro de clientes debido a una dirección faltante, por lo que necesitamos ajustar manualmente cada mapeo a nivel de campo de la matriz secundaria. Cuando se ajusta cada mapeo, la línea del iterador del nodo de bucle generado se desplaza automáticamente a la ubicación correcta para la salida de destino deseada (según el ajuste del mapeo).

Para ajustar el mapeo para cada campo de destino en la matriz secundaria (como street), agregamos un símbolo de almohadilla seguido de un número entero a la matriz de direcciones/elementos en el secuencia de comandos de mapeo. 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 para 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 mueven al destino.

manual del nodo loop 1

Sugerencia

Este ejemplo utiliza la sintaxis hash descrita en Notación de ruta de referencia.

Para devolver el segundo elemento o elementos posteriores de la matriz, especifique #2, #3, y así sucesivamente. El FindValue función también se puede utilizar 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 cuando utiliza Funciones de instancia, el símbolo de almohadilla se inserta automáticamente cuando sea necesario.

Después de agregar 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 matriz de cliente/artículo de nivel superior de origen. Esto muestra que por cada nuevo registro de cliente en el origen, se generará un nuevo registro de cliente en el destino:

manual del nodo de bucle 2

A medida que asignamos campos adicionales en la matriz secundaria, la línea del iterador del nodo de bucle vuelve a la posición original. El proceso de agregar la referencia del elemento (#1) debe repetirse como se indicó anteriormente para cada asignación 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 modos 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 menú de acciones para abrir el menú de acciones. En el menú, seleccione una de estas opciones de eliminación de mapeo:

nodo de destino eliminar nodo de bucle anotado

Elemento del menú
Descripción
eliminar nodo de bucle

Eliminar nodo de bucle elimina la definición del 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 hojas 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

Eliminar nodo de bucle y asignaciones elimina la definición del nodo de bucle debido a asignaciones que son hojas secundarias directas asociadas con el nodo de bucle, y elimina esas asignaciones.

Se conservan otras asignaciones dentro de los nodos de bucle secundarios debajo del nodo de bucle principal, 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).