Saltar al contenido principal

JSON a Tabla

Configuración actual de la tarea JSON a Tabla en el Diseñador de Flujos de Trabajo
  • Tipo de tarea: json-a-tabla

La tarea "JSON a Tabla" permite importar datos de un archivo JSON con estructura tabular e insertarlos en una tabla de una base de datos. Su función es doble: se conecta a una base de datos para escribir físicamente los datos y, al mismo tiempo, expone los datos importados como un Dataset para su uso por parte de tareas posteriores en el Workflow (como un Iterador). Esta tarea trabaja en un JSON de entrada proporcionado por una tarea anterior (ej. Importar Texto).

1. Conexión a base de datos

En esta pestaña se configuran todos los parámetros para establecer la conexión a la base de datos de destino.

Tabla objetivo

Es posible definir el origen de las credenciales para la conexión:

  • Manual: permite la inserción manual de todos los datos de la conexión y de la tabla en los campos subyacentes.
  • Entorno: permite el uso de un entorno de conexión preconfigurada. Seleccionándolo, los campos de autenticación se completan automáticamente.

Tipo de Base de Datos

Define el tipo de base de datos (DBMS) a la que conectarse. Las opciones soportadas incluyen:

  • PostgreSQL
  • SQL Server
  • MySQL
  • Oracle DB: permite especificar la conexión a través de SID o SERVICE.
  • SAP HANA

Conexión SSL

Indica si la conexión a la base de datos debe realizarse a través de un canal seguro.

Autenticación

CampoDescripción
HostDirección del base de datos externo autorizado.
PuertoPuerto previsto para la conexión al base de datos externo.
Nombre DBNombre del base de datos a la que conectarse.
UsuarioNombre de usuario para acceder al base de datos.
Establecer ContraseñaAbre una ventana para insertar la contraseña de forma segura.

Gestión de tabla

Define cómo debe interactuar la tarea con la tabla física en la base de datos.

  1. Tabla objetivo: determina la acción que se debe ejecutar en la tabla:
  • Crear tabla: siempre crea una nueva tabla. La operación falla si ya existe una tabla con el mismo nombre.
  • Crear tabla si no existe: crea una nueva tabla solo si no existe ya una tabla con el mismo nombre.
  • Tabla existente: inserta los datos en una tabla ya presente. Por defecto, los nuevos datos se añaden a los ya presentes (Anexar). Activando la casilla Truncar Insert, la tabla se vacía antes de insertar los nuevos datos.
  1. Nombre de tabla objetivo: nombre de la tabla que se debe crear o en la que se deben escribir los datos (ej. utenti, prodotti, log_eventi).

2. Estructura Tabular

La pestaña Estructura tabular permite definir los campos (columnas) de la tabla y mapear cada columna con los elementos del archivo JSON de origen.

Campos disponibles

Cada fila representa una columna de la tabla. Para cada campo es posible configurar:

CampoDescripción
TipoTipo de dato del campo. Valores disponibles: NUMERICO, STRINGA, DATA, FECHA Y HORA
PrecisiónPara NUMERICO: número máximo de dígitos; para STRINGA: longitud máxima
AliasNombre efectivo de la columna en la tabla de la base de datos. Será este el nombre visible en el DB.
Expresión JSONPathExpresión JSONPath para extraer el valor del archivo JSON de origen (ej. $.persona.info.name)

Gestión de la Estructura de la Tabla

Aquí está la traducción del documento de usuario de Sybot 2.0 al español:

En la parte inferior derecha de la Estructura Tabular se encuentran tres botones:

BotónAcción
GuardarGuarda la estructura definida
ImportarImporta una estructura existente
ExportarExporta la estructura definida

Esta funcionalidad permite guardar, exportar o reutilizar las asignaciones, evitando la compilación manual de los campos y reduciendo el riesgo de errores.

Nota Técnica

  • Visibilidad: Las estructuras guardadas en el sistema son visibles exclusivamente para el usuario que las creó.
  • Profundización: Para una descripción detallada de todas las opciones y la lógica de funcionamiento, haga referencia a la página Estructura de la tabla.

3. Ejemplo de Configuración

Para crear una tabla utenti con los siguientes campos:

TipoAliasExpresión JSONPath
STRINGAname$.user.info.name
STRINGAemail$.user.info.email
NUMERICOage$.user.info.age
STRINGAcity$.address.city
FECHAregistration_date$.registration.date
FECHA Y HORAregistration_datetime$.registration.datetime

El resultado de esta configuración será la creación de una tabla en la base de datos con las columnas name, email, age, city, registration_date y registration_datetime (Alias) pobladas con los valores extraídos del JSON (Expresión JSONPath).

Alias con Caracteres Especiales o Mayúsculas

Si se quieren usar letras mayúsculas, caracteres especiales o espacios en los nombres de las columnas, es necesario encerrar el Alias entre comillas dobles (ej. "Nombre de Usuario").

TipoAliasExpresión JSONPath
STRINGA“Name”$.name
STRINGA“Surname”$.surname

Resultado en la Base de Datos

4. Gestión de Estructuras JSON Anidadas

La Tarea JSON a Tabla es capaz de gestionar archivos JSON que contienen estructuras anidadas, como arrays o objetos dentro de otros objetos. Mediante la Expresión Path/Query, es posible extraer bloques anidados enteros o valores individuales, mapeándolos a columnas de la tabla. La Tarea puede serializar un objeto anidado en una única columna de texto, preservando la estructura original en formato JSON.

Ejemplo: Estructuras Complejas Anidadas

La Tarea gestiona con la misma facilidad también estructuras mucho más complejas. Consideremos un JSON donde departments contiene un objeto, que a su vez contiene un array de otros objetos.

[
{
"name": "Luca",
"surname": "Rossi",
"departments": {
"department": [
{
"details": {
"name": "Marketing",
"location": "Milan"
}
},
{
"details": {
"name": "Sales",
"location": "Rome"
}
}
]
}
},
{
"name": "Maria",
"surname": "Bianchi",
"departments": {
"department": [
{
"details": {
"name": "HR",
"location": "Florence"
}
}
]
}
}
]

Incluso en este caso, la configuración en la "Estructura Tabular" permanece idéntica:

TipoPrecisiónAliasExpresión JSONPath
String1000name$.name
String1000surname$.surname
String4000departments$.departments

La Tarea tomará el objeto entero asociado a la clave departments y lo serializará en una única cadena JSON.

Resultado en la Base de Datos:

nombreapellidodepartamentos
LucaRossi{"department":[{"details":{"name":"Marketing","location":"Milan"}},{"details":{"name":"Sales","location":"Rome"}}]}
MariaBianchi{"department":[{"details":{"name":"HR","location":"Florence"}}]}

Extracción de subelementos con JSONPath

Si en cambio se quisiera extraer elementos individuales anidados, como por ejemplo los nombres de los departamentos, es posible utilizar una Expresión JSONPath específica. Por ejemplo:

TipoPrecisiónAliasExpresión JSONPath
String1000name$.name
String1000surname$.surname
String1000department_names$.departments.department[*].details.name

Con esta configuración, la Tarea JSON a Tabla selecciona todos los valores name presentes en el array department y los inserta en la columna department_names de la base de datos, separándolos eventualmente con una coma.

Resultado en la Base de Datos

nombreapellidodepartment_names
LucaRossiMarketing, Ventas
MariaBianchiRRHH

Este enfoque permite extraer solo los datos necesarios, sin serializar todo el bloque JSON, haciendo que la tabla sea más fácil de consultar y utilizar en otras tareas o informes.

5. Parámetros de Salida

Una vez que la Tarea "JSON a Tabla" ha completado el procesamiento, expone un rico conjunto de parámetros de salida. Estos parámetros no solo proporcionan información sobre el resultado de la operación, sino que también ponen a disposición los datos procesados en varios formatos para las tareas posteriores.

  • result: Proporciona el estado general de la ejecución de la tarea (por ejemplo, "Éxito" o un mensaje de error).
  • resultJson: Representa el resultado de la ejecución de la tarea en formato JSON, incluyendo información general, configuraciones y detalles sobre la ejecución.
  • targetTable: Devuelve el nombre de la tabla de la base de datos en la que se insertaron los datos.
  • rowCount: Indica el número total de filas que se insertaron en la tabla de destino.
  • DataExportCsv: Devuelve todo el conjunto de datos procesado, formateado como texto en formato CSV (Comma-Separated Values).
  • DataExportJson: Devuelve todo el conjunto de datos procesado, formateado como una cadena JSON.
  • Dataset: Este parámetro representa el nombre de la columna de la tabla (Por ejemplo: name). Es el parámetro más importante para conectar esta Tarea con un Iterador. Para acceder a los valores de una columna específica durante una iteración, se utiliza la sintaxis Dataset.NombreColumna.
  • DataColumn: Este parámetro permite acceder al contenido completo de una columna como una única entidad (por ejemplo, un array o una lista).
  • DataColumn.NombreColumna: Devuelve todos los valores de la columna “NombreColumna”. Por ejemplo: “Luca, Maria, Giovanni, Elena”

6. Ejemplo parámetro resultJson

{
"run_info": {
"status": "Completed",
"run_result": "Success"
},
"output_parameters": {
"exitStatus": "0"
}
}