Procesamiento de esquemas y conversión de datos en Jitterbit Integration Studio
Introducción
Durante el procesamiento, los datos en los esquemas pueden ser convertidos. Esta página describe cuándo y cómo se convierten los datos dependiendo del tipo de esquema:
Todos los tipos de esquema
En la mayoría de los casos (las excepciones se anotan a continuación), ciertos datos se convierten de la misma manera independientemente del tipo de esquema:
Tipos de datos
Estas secciones describen el soporte de Integration Studio para ciertos tipos de datos según el tipo de esquema. Para todos los tipos de datos soportados en Jitterbit Scripts, consulte Tipos de datos en Jitterbit Script.
Tipos de datos de precisión ilimitada
Para la mayoría de los tipos de esquema, los tipos de datos de precisión ilimitada, como el decimal XML, se convierten a tipos de datos double
. Esto impone un límite de precisión que podría truncar los datos.
El límite de precisión está dentro del rango de los valores mínimo y máximo de un entero con signo de 32 bits, que es –2,147,483,648 a 2,147,483,647. Si está fuera de este rango, considere usar un tipo de dato de cadena en su lugar para evitar truncar los datos.
Tipos de datos no primitivos
Los tipos de datos primitivos boolean
, date
, double
, float
, integer
, long
y string
, y el tipo de dato no primitivo decimal
son soportados en todos los tipos de esquema. Al crear o editar un esquema plano o jerárquico personalizado o al editar cualquier esquema cargado en una transformación, estos tipos de datos están disponibles para elegir en el menú desplegable Tipo. Para nuevos esquemas personalizados, otros tipos de datos no primitivos como datetime
no son soportados.
Sin embargo, otros tipos de datos no primitivos son compatibles para esquemas que se generan automáticamente a partir de un esquema generado por conector o que fueron reflejados desde dicho esquema. Después de ser generados, estos esquemas también pueden ser editados manualmente en el editor de esquemas personalizados. Si el esquema contiene algún tipo de dato no primitivo, estos también se enumeran en el menú desplegable Tipo al editar dicho esquema.
Nombres de campos y nodos
Los nombres de campos y nodos se convierten en espacios de nombres válidos siguiendo el estándar XML. Para referencia, consulte NCNameChar para los caracteres permitidos según lo definido por el W3C.
Al utilizar un esquema proporcionado por un conector, cualquier carácter especial en un nombre de campo o nodo del esquema se reemplaza por guiones bajos (_
) según sea necesario para crear un esquema XML válido.
Nota
Los esquemas JSON siguen reglas adicionales en ciertas circunstancias (descritas a continuación).
Valores nulos
Los campos con valores nulos se incluyen en el esquema de datos resultante a pesar de no tener datos. Como tampoco tienen un tipo de dato definido, estos campos se tratan como si tuvieran un tipo de dato de cadena.
Nota
Esto se aplica a todos los tipos de esquema excepto a los esquemas JSON procesados utilizando el Procesamiento de nombres JSON preservados (descritos a continuación).
Esquemas CSV
Al utilizar un esquema CSV, estas reglas se aplican a los siguientes datos:
Archivos CSV con encabezados
Al proporcionar un archivo CSV con una fila de encabezado como archivo de esquema de muestra, se aplican estas reglas para generar nombres de columnas:
- Los caracteres especiales se reemplazan con un signo de interrogación (
?
). - Los espacios se reemplazan con un guion bajo (
_
). - Los nombres de columnas en blanco se reemplazan con
f1
,f2
,f3
, y así sucesivamente. - Los nombres de columnas que comienzan con un número se prefijan con un guion bajo (
_
). - Los nombres de columnas repetidos se les añade
2
,3
,4
, y así sucesivamente.
Caracteres especiales
Los caracteres especiales (.
_
-
$
#
@
?
) en los esquemas CSV se convierten en estas circunstancias:
- Los caracteres especiales presentes en el lado de origen o destino de una transformación se reemplazan por un signo de interrogación (
?
). - Los caracteres especiales en un script en un campo de destino en una transformación se reemplazan por un signo de interrogación (
?
). Esta regla también se aplica a cualquier esquema plano personalizado o jerárquico personalizado creado en formato CSV.
Nota
Estas conversiones afectan solo las estructuras de esquema, no los datos reales.
Esquemas JSON
Al usar un esquema JSON, la conversión de datos depende de la configuración del proyecto Preservar nombres JSON:
-
Procesamiento de preservar nombres JSON: El método predeterminado utilizado cuando Preservar nombres JSON está habilitado. Esto se aplica a proyectos creados después de la [versión 11.48 de Harmony] y que se ejecutan en la versión 11.48 del agente o posterior.
-
Procesamiento JSON heredado: El método predeterminado utilizado cuando Preservar nombres JSON está deshabilitado. Esto se aplica a proyectos creados antes de la [versión 11.48 de Harmony] o que se ejecutan en la versión 11.47 del agente o anterior. Después de actualizar a la versión 11.48 del agente o posterior, se puede habilitar el procesamiento de preservar nombres JSON habilitando la configuración del proyecto Preservar nombres JSON. Sin embargo, no se recomienda para proyectos existentes.
No recomendado para proyectos existentes
Para proyectos creados antes de la [versión 11.48 de Harmony], habilitar Preservar nombres JSON solo afecta las operaciones y esquemas configurados después de la activación. Esto crea inconsistencias cuando se mezcla con el procesamiento JSON heredado existente.
Recomendación: Siga utilizando el procesamiento JSON heredado para proyectos existentes, o regenerar todas las operaciones y esquemas después de habilitar esta función para evitar inconsistencias.
La siguiente tabla resume las diferencias clave entre los dos métodos de procesamiento de JSON:
Método | Procesamiento de nombres JSON preservados | Procesamiento de JSON heredado |
---|---|---|
Cuándo se utiliza | Nombres JSON preservados está habilitado | Nombres JSON preservados está deshabilitado |
Compatibilidad del proyecto | Proyectos creados después de [11.48 Harmony release] y versión de agente 11.48 o posterior | Proyectos creados antes de [11.48 Harmony release] o versión de agente 11.47 o anterior |
Nombres de campos que comienzan con números | Se les antepone un guion bajo (por ejemplo, 1text se convierte en _1text ) | Se reemplazan con un guion bajo (por ejemplo, 12345 se convierte en _2345 ) |
Caracteres especiales en nombres de campos | Convertidos solo en el tiempo de diseño; se utilizan los nombres originales en tiempo de ejecución | Convertidos en el tiempo de diseño y en tiempo de ejecución |
Manejo de valores nulos | Campos nulos excluidos del esquema resultante | Campos nulos incluidos en el esquema resultante como tipo de cadena |
Procesamiento de nombres JSON preservados
Al utilizar Procesamiento de nombres JSON preservados (cuando Nombres JSON preservados está habilitado), se aplican estas reglas:
- Tipos de datos (como se describe arriba)
- Nombres de campos y nodos
- Valores nulos
Nombres de campos y nodos
Cuando se utiliza el procesamiento de Preservar nombres JSON, los nombres de los campos y nodos se convierten en estas circunstancias:
-
El procesamiento de nombres de campos y nodos descrito en Todos los tipos de esquema se aplica solo durante el tiempo de diseño. En tiempo de ejecución, se utiliza el nombre original del campo o nodo con caracteres especiales. Por ejemplo, el nombre del campo
location_ids[]
aparece comolocation_ids__
en la transformación durante el tiempo de diseño, pero en tiempo de ejecución, se utiliza el originallocation_ids[]
.Para verificar este comportamiento mientras se soluciona problemas, consulte Caracteres especiales en esquemas JSON proporcionados por el conector en Solución de problemas de operación.
-
Cuando el nombre de un campo o nodo de un esquema JSON comienza con un número, se le antepone un guion bajo
_
. Por ejemplo,1text
se convierte en_1text
.
Valores nulos
Los campos o nodos con valores nulos no se incluyen en el esquema de datos resultante.
Procesamiento JSON heredado
Cuando se utiliza el procesamiento JSON heredado (cuando Preservar nombres JSON está deshabilitado), se aplican estas reglas:
- Tipos de datos (como se describió anteriormente)
-
Nombres de campos y nodos (como se describió anteriormente)
Precaución
Además del procesamiento de nombres de campos y nodos descrito en Todos los tipos de esquema, al utilizar procesamiento JSON heredado, el nombre de un campo o nodo de un esquema JSON que comienza con un número se reemplaza con un guion bajo
_
. Por ejemplo,12345
se convierte en_2345
. Este problema no ocurre con el procesamiento de nombres JSON preservados. -
Valores nulos (como se describió anteriormente)
Esquemas XML
Al utilizar un esquema XML, se aplican estas reglas:
Para obtener información sobre la solución de problemas de errores de esquema XML y transformación, consulte Solución de problemas de operación.
Espacios de nombres
Se admiten espacios de nombres en esquemas XML. Si se utiliza más de un espacio de nombres en un esquema XML, el agente de Jitterbit convierte el esquema XML en múltiples archivos XSD durante el procesamiento.
Etiquetas autoconclusivas
Las etiquetas autoconclusivas en elementos de esquemas XML son compatibles con cierta manipulación del XML de muestra utilizado para generar el esquema. Para enviar el elemento XML en la carga útil sin un valor mapeado, se puede utilizar una función de Jitterbit y una variable de Jitterbit como se describe a continuación.
Manipular el XML de muestra
Se requiere manipulación cuando un archivo de muestra XML utiliza notación abreviada para una etiqueta de apertura y cierre en un elemento como este:
<tag/>
Si se utiliza tal abreviatura en un esquema XML directamente, el nodo no podrá ser mapeado cuando se use como el esquema de destino de una transformación.
Para resolverlo, manipule el XML de muestra que se está utilizando para generar el esquema para expandir las etiquetas de apertura y cierre que rodean el elemento, y proporcione un valor de muestra para que se asigne un tipo de dato al elemento:
<tag>example</tag>
El elemento aparecerá entonces como un campo en el esquema XML y, cuando se use como el esquema de destino en una transformación, se podrá mapear a ese campo.
Mapear al campo XML
Si no tiene un objeto o variable de origen para mapear al campo de destino, puede colocar la función de Jitterbit Null
en el script de transformación para usarla como el valor mapeado:
<trans>
Null()
</trans>
Antes de la transformación que utiliza el esquema XML, establezca una de estas variables de Jitterbit (dependiendo de cuál sea apropiada para su caso de uso) para controlar lo que se envía:
- XML vacío: Para enviar un nodo XML vacío en la carga útil, utilice
jitterbit.target.xml.include_empty_xml
:
$jitterbit.target.xml.include_empty_xml=true;
- XML Nulo: Para enviar un valor nulo en la carga útil XML, utiliza
jitterbit.target.xml.include_null_xml
:
$jitterbit.target.xml.include_null_xml=true;
- Excluir XML Vacío: Para excluir un nodo XML vacío con un tipo de dato booleano, utiliza
jitterbit.target.xml.exclude_empty_data
:
$jitterbit.target.xml.exclude_empty_data=true;
Caracteres especiales
Los caracteres especiales en los esquemas XML se convierten en estas circunstancias:
-
Los caracteres especiales en un script en un campo de destino en una transformación se reemplazan por un signo de interrogación (
?
). -
Estos caracteres especiales en un campo o nombre de nodo de esquema XML no son compatibles (ya que XML no los admite):
$
#
@
?
Nota
Estas conversiones están limitadas a las estructuras de esquema solamente y no afectan los datos reales.
Solucionar problemas de procesamiento de esquemas
Problemas conocidos
Campos mapeados en blanco con esquemas de origen planos
Al utilizar un esquema de origen plano, los campos de destino pueden no mapearse correctamente y aparecer en blanco en ciertas circunstancias. Este problema no ocurre con esquemas reflejados o esquemas JSON.
Solución alternativa: Agrega un script al principio de la operación para deshabilitar las transformaciones de streaming:
$jitterbit.transformation.auto_streaming = false;
Optimizar el uso de memoria
Para transformaciones que procesan archivos grandes y no pueden usar streaming, puedes configurar el fragmentado para reducir el uso de memoria.
Configurar fragmentado
El fragmentado divide grandes conjuntos de datos en piezas más pequeñas para su procesamiento. Configura el fragmentado a nivel de operación:
-
Abre la configuración de la operación desde una de estas ubicaciones:
-
La pestaña Flujos de trabajo del panel del proyecto
- La pestaña Componentes del panel del proyecto
-
Lienzo de diseño (haz doble clic en la operación)
-
Selecciona la pestaña Opciones.
-
Establece el tamaño del bloque lo más grande posible, asegurándote de que cada bloque quepa en la memoria disponible.
Para fuentes y destinos XML muy grandes, el uso de bloques puede ser tu única opción si el streaming no es aplicable.
Nota
Utiliza transformaciones por streaming cuando sea posible. El uso de bloques solo debe emplearse cuando el streaming no está disponible y el uso de memoria es una preocupación.
Prevenir transferencias de archivos duplicados
Harmony rastrea los archivos procesados para evitar transferencias duplicadas. Antes de transferir un archivo, el sistema verifica estos tres criterios:
- Nombre de archivo
- Fecha de modificación
- ID de operación
Si los tres criterios coinciden con un archivo procesado anteriormente, el sistema omite la transferencia.
Esta deduplicación automática asegura que volver a ejecutar operaciones no reprocesa archivos que no han cambiado.