JSON a Tabla
- 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
| Campo | Descripción |
|---|---|
| Host | Dirección del base de datos externo autorizado. |
| Puerto | Puerto previsto para la conexión al base de datos externo. |
| Nombre DB | Nombre del base de datos a la que conectarse. |
| Usuario | Nombre de usuario para acceder al base de datos. |
| Establecer Contraseña | Abre 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.
- 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.
- 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:
| Campo | Descripción |
|---|---|
| Tipo | Tipo de dato del campo. Valores disponibles: NUMERICO, STRINGA, DATA, FECHA Y HORA |
| Precisión | Para NUMERICO: número máximo de dígitos; para STRINGA: longitud máxima |
| Alias | Nombre efectivo de la columna en la tabla de la base de datos. Será este el nombre visible en el DB. |
| Expresión JSONPath | Expresió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ón | Acción |
|---|---|
| Guardar | Guarda la estructura definida |
| Importar | Importa una estructura existente |
| Exportar | Exporta 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:
| Tipo | Alias | Expresión JSONPath |
|---|---|---|
| STRINGA | name | $.user.info.name |
| STRINGA | $.user.info.email | |
| NUMERICO | age | $.user.info.age |
| STRINGA | city | $.address.city |
| FECHA | registration_date | $.registration.date |
| FECHA Y HORA | registration_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").
| Tipo | Alias | Expresió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:
| Tipo | Precisión | Alias | Expresión JSONPath |
|---|---|---|---|
| String | 1000 | name | $.name |
| String | 1000 | surname | $.surname |
| String | 4000 | departments | $.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:
| nombre | apellido | departamentos |
|---|---|---|
| Luca | Rossi | {"department":[{"details":{"name":"Marketing","location":"Milan"}},{"details":{"name":"Sales","location":"Rome"}}]} |
| Maria | Bianchi | {"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:
| Tipo | Precisión | Alias | Expresión JSONPath |
|---|---|---|---|
| String | 1000 | name | $.name |
| String | 1000 | surname | $.surname |
| String | 1000 | department_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
| nombre | apellido | department_names |
|---|---|---|
| Luca | Rossi | Marketing, Ventas |
| Maria | Bianchi | RRHH |
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"
}
}