Saltar al contenido

Nodos de Bucle

Introducción

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

Normalmente, la generación automática de nodos de bucle durante el mapeo es apropiada 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 necesite definir manualmente un nodo de bucle para forzar que los datos se repita en un nodo diferente.

En determinadas situaciones, un campo de origen asignado 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 es posible que no genere los datos deseados en el destino. En este caso, es posible que necesite ajustar la asignación manualmente.

También puede, 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 asignación automática, 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+ 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:

soltar gif de bucle de nodo

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

El nodo de bucle ahora 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 todavía no hay asignaciones de hojas directas en los campos debajo del nodo). Complete la asignación de campos debajo del nodo de bucle como de costumbre:

soltar nodo definir resultado del nodo de bucle

Los nodos colapsados que contienen asignaciones de nodos de bucle se muestran con una línea iteradora de puntos. Haga clic en el triángulo desplegable para expandir los nodos secundarios hasta encontrar el nodo en bucle:

línea de iterador de nodo colapsado

Ajustar Manualmente los Nodos de Bucle Generados Automáticamente

Después de que los nodos de bucle se generen automáticamente, 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 los registros de la empresa. A continuación, primero mostramos el resultado cuando usamos 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 un bucle de datos en el segundo nodo del objetivo. item nodo:

resultado del nodo del bucle de asignación automática

Cuando el mapeo anterior se procesa utilizando los datos de entrada siguientes, 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 del Nodo de Bucle Manual

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:

soltar nodo definir bucle cambio de nodo gif

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

soltar nodo definir bucle resultado de cambio de nodo

Cuando el mapeo anterior se procesa utilizando los mismos datos de entrada que se usaron en la generación automática de nodos de bucle, se obtiene el resultado deseado, 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 de Destino Que No Coinciden

Un campo de origen asignado puede tener una línea iteradora 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 icono de información). al lado del nodo de origen). Esta configuración de mapeo es válida, pero es posible que no genere los datos deseados en el destino.

Es posible que desee ajustar manualmente la asignación si alguna de estas opciones es cierta 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 que falta 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 analizan un caso de uso en el que se requieren ajustes de asignación para conservar 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 de destino tienen estas características:

Fuente Objetivo
  • El archivo fuente 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+ nodo de matriz de direcciones/elementos que puede contener múltiples direcciones.
  • El archivo de destino recibe registros de clientes.
  • El nodo de nivel superior es un 0+ cliente/nodo de matriz plana para contener 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 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 artículos/cliente 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 repetido (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 siendo reconfigurado

Al hacer clic en Confirmar, el extremo de origen de la línea del iterador de bucle se mueve automáticamente desde el nodo de matriz de artículos/cliente de nivel superior hasta el nodo de matriz de artículos/direcciones anidadas (también indicado con un icono de información). al lado del 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 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, entonces el 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 de Mapeo Manual

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

Para ajustar la asignación 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. Añadiendo el #1 La referencia devuelve el primer elemento de una matriz, lo que da como resultado 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 de bucle 1

Consejo

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

Para devolver el segundo elemento o los siguientes de la matriz, especifique #2, #3, Etcétera. 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 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 donde sea requerido.

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 artículos/clientes 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 iteradora del nodo de bucle regresa a la posición original. El proceso de agregar la referencia del artículo (#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 en el menú de acciones de un nodo.

Desde cualquier modo de mapeo o modo secuencia de comandos, coloque el cursor sobre el nombre de un nodo y haga clic en el icono 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

Opción del menú
Descripción
eliminar nodo de bucle

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 directa como se describe en Eliminar una asignación en Asignación de objetos de origen.

Nota

Si elimina todas las asignaciones de hojas directas 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 de nodo de bucle debido a asignaciones que son hijos de hoja directos asociados 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 al menos un nieto está asignado.

Esta acción está disponible solo en nodos que tienen un nodo de bucle definido (ya sea manualmente o mediante generación automática).