En esta Ruta de aprendizaje conectada, crearemos una Cadena que ilustra cómo convertir un conjunto de datos JSON a CSV. En este conjunto de datos de ejemplo, hay una matriz de objetos anidados.
Esta ruta refuerza el concepto de bucle que aprendimos en el ejercicio de Datos JSON, así como el concepto de unión cartesiana en la ruta de Objetos anidados JSON. Si no has completado estos itinerarios, te recomendamos encarecidamente que los realices antes de completar éste.
| Objetivo principal de aprendizaje | Capacidades del conector JSON |
| Objetivos de aprendizaje secundarios | El poder de la transformación tabular Comando de consulta avanzada, iteración y transformación de variables |
| Requisitos previos | |
| Plantilla de Cadenas de Apoyo | CLP | Acceder a una matriz JSON de objetos anidados |
Paso 1: Crea una Cadena
- Añade una nueva cadena
- Ponle Nombre a la Cadena: CLP | Acceso a la cadena JSON de Objetos Anidados
- Crear una variable de cadena
- Nombre: cv-JSON-AllDonut
- Valor: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Guardar la cadena
Etapa 2: Recuperar datos JSON
Utiliza el conector HTTP para recuperar datos de rosquillas desde una ubicación web. Este conjunto de datos ilustra un ejemplo de un conjunto de datos JSON más complejo con una matriz (varios elementos) de objetos anidados (atributos).
- Añade un comando OBTENER desde el conector HTTP al nodo Inicio.
- Configura el comando con lo siguiente:
| Nombre | GET - Todos los Postres |
| Nombre de usuario | <leave> |
| Contraseña | <leave> |
| Certificado CA | <leave> |
| Certificado | <leave> |
| Certificado Clave Privada | <leave> |
| Mostrar respuesta | Comprobado |
| dirección URL|URL | cv-JSON-AllDonut Variable en cadena |
| Cadena de consulta | <leave> |
| Tipo de contenido | aplicación/json |
| Respuesta | <leave> |
- Guardar el comando
Etapa 3: Convertir JSON a CSV
Utiliza el conector JSON para extraer claves desde la matriz JSON para identificar las distintas variedades de donuts.
Como referencia, a continuación se muestra el esquema del JSON de todos los donuts:
Esquema
[{"id":"0001","type":"donut","name":"Cake","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"},{"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil's Food"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5005","type":"Sugar"},{"id":"5007","type":"Powdered Sugar"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]},{"id":"0002","type":"donut","name":"Raised","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5005","type":"Sugar"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]},{"id":"0003","type":"donut","name":"Old Fashioned","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]}]
- Añade un comando Matriz a CSV desde el conector JSON a la cadena.
- Conecta el nodo Inicio (Obtener - Todos los postres) al comando Matriz a CSV.
- Pon nombre al comando: Matriz a CSV - Obtener Variedad.
- En el parámetro Datos JSON, selecciona el Resultado Respuesta del comando GET - Todos los postres.
- Deja en blanco los parámetros Texto de entrada, Ruta a la raíz, y Filtro.
- Deja el parámetro Delimitador multivalor como una coma (,).
- Marca la opción Vista previa de resultado.
- Introduce variedad para Nombre de la columna y .name para los parámetros JSONPath.
- Selecciona Tubería para el parámetro Delimitador.
- Guardar el comando
Etapa 4: Crear un conjunto de datos iterable.
Como se ha señalado, el conjunto de datos tiene una matriz (es decir, varios elementos) de objetos anidados. Para procesar cada una de las variedades individualmente, hay que añadir números de filas al conjunto de datos. Estos números de fila se utilizarán en posteriores comandos de Matriz a CSV para identificar el elemento de la matriz (donut) para el que se analizará el objeto anidado (atributos).
Los que estén familiarizados con el Generador de cadenas se preguntarán por qué utilizamos la Consulta avanzada en lugar del comando Añadir números de filas. El comando Añadir números de filas empieza a contar en uno (1) y tenemos que empezar a contar en cero (0), ya que las matrices JSON tienen base cero.
- Añade un comando Consulta avanzada desde el conector de Transformación tabular a la cadena.
- Conecta el comando Matriz a CSV - Obtener variedad al comando Consulta avanzada.
- Pon nombre al comando: Consulta avanzada - Añadir números de filas.
- Configura la sección Tablas
- En el campo Archivo, especifica el Archivo convertido Resultado desde el comando Matriz a CSV - Obtener variedad.
- Introduce las variedades en el parámetro Nombre de tabla. La consulta especificada se ejecutará contra esta tabla.
- En el parámetro Consulta, introduce lo siguiente:
SELECCIONA
ROW_NUMBER () OVER (
ORDER BY variedad
)-1 RowNum,
variedad
FROM
variedades
- Especifica Tubo y Coma para los parámetros Delimitador de Entrada y Delimitador de Salida, respectivamente.
- Comprueba el parámetro de los resultados de la Vista previa.
- Guarda el comando.
Paso 5: Crear una matriz JSON
Utiliza el comando CSV a JSON desde el conector JSON para convertir la lista única de variedades en una matriz JSON. Un Grupo de comandos puede iterar sobre cada elemento de este conjunto.
- Añadir un comando CSV a JSON desde el conector JSON a la Cadena.
- Conecta el comando Consulta avanzada - Añadir números de fila al comando CSV a JSON.
- Configura el comando utilizando lo siguiente:
| Nombre | De CSV a JSON - Variedades |
| Archivo de Entrada | Resultado: Resultado desde el comando Consulta avanzada - Añadir números de filas |
| Delimitador | Coma (,) |
- Guardar el comando
Etapa 6: Añadir un grupo de comandos
Añade un Grupo de comandos a la Cadena para permitir la iteración sobre cada una de las variedades de donuts identificadas en la etapa Consulta avanzada.
- Añadir un Grupo de comandos a la Cadena.
- Conecta el comando CSV a JSON - Variedades al En sección del Grupo de comandos.
- Haz clic en el Grupo de comandos y selecciona el icono del cuentagotas para cambiar el color del comando a amarillo.
- Ponle nombre al Grupo: Variedades de rosquillas.
- Activa el conmutador Iteraciones y selecciona el Archivo JSON Resultado del comando CSV a JSON - Variedades.
- Guardando el Grupo de comandos.
Etapa 7: Obtén la lista de los ingredientes.
Utiliza el comando Matriz a CSV del conector JSON para obtener la lista de toppings de la matriz JSON anidada. Esta acción se repite para cada una de las variedades de rosquillas.
⚠ Presta especial atención a las advertencias de las etapas siguientes, señaladas con un signo de exclamación rojo.
- Añade un comando Matriz a CSV desde el conector JSON a la cadena.
- Conecta el grupo Comienza desde el grupo de comandos Variedades de rosquillas al grupo de comandos Matriz a CSV Comando.
- Pon nombre al comando: Matriz a CSV - Complementos.
- En el parámetro Datos JSON, selecciona el Resultado Respuesta del comando GET - Todos los postres.
- Deja en blanco el parámetro Texto de entrada.
- En el parámetro Ruta a la raíz, aprovecharemos el valor del iterador para especificar el elemento de la matriz sobre el que actuará la iteración.
- Los siguientes pasos son críticos y deben leerse en su totalidad antes de completar esta etapa.
- Haz clic en el parámetro Ruta a la raíz. Desde el panel de selección Variable, despliega el Iterador de Grupos y haz clic en Iteración de Archivos JSON.
- Haz clic en la burbuja verde Iteración de archivos JSON en el parámetro Ruta a la raíz. Al hacerlo: se abrirá el Formulario de transformación de variables. Selecciona Obtener valor de JSON y haz clic en el signo más ( ). Escribe RowNum (distingue entre mayúsculas y minúsculas) en el campo Valor y pulsa la tecla intro. Haz clic en Aceptar.
- La variable debe tener un asterisco que indique que se ha aplicado una transformación de variable.
- 🛑 Si alguno de estos pasos falla, elimina la Variable de Iteración de Archivos para JSON de la Ruta a la raíz y vuelve a empezar.
- Después de la burbuja de Iteración de Archivos JSON, escribe topping (minúsculas) y pulsa la tecla intro.
- Los siguientes pasos son críticos y deben leerse en su totalidad antes de completar esta etapa.
- Deja en blanco el parámetro Filtro.
- Deja el valor predeterminado como Coma (,), para el parámetro Delimitador multivalor.
- Marca la opción Vista previa de resultado.
- En la sección Columnas, especificamos la(s) clave(s) de la matriz JSON de la(s) que extraer el(los) valor(es) a una columna del CSV resultante.
- En el parámetro Nombre de la columna, introduce encima de y en el parámetro JSONPath, introduce .tipo.
- En el parámetro Delimitador, selecciona Coma.
- Guarda el comando.
Etapa 8: Obtener la lista de bateadores.
Utiliza el comando Matriz a CSV del conector JSON para obtener la lista de bateadores de la matriz JSON anidada. Esta acción se repite para cada una de las variedades de rosquillas. Como esta etapa es muy similar a la anterior, copia el comando configurado en la etapa anterior y actualízalo simplemente para la información de los bateadores.
- Copiar la matriz a CSV - Comando Toppings.
- Conecta el grupo Comienza desde el grupo de comandos Variedades de rosquillas al grupo de comandos Array to CSV - Toppings (Copiar) Comando.
- Nombra el comando copiado: Matriz a CSV - Mezclas.
- En el parámetro Ruta a la raíz, elimina la burbuja superior haciendo clic en la X. Escribe bateadores (distingue mayúsculas de minúsculas) y pulsa intro. A continuación, escribe batter y pulsa Intro. Debería haber tres burbujas en el parámetro Ruta a la raíz.
- Iteración de archivos JSON *.
- mezclas
- bateador
- En la sección Columnas, cambia el Nombre de la columna de a a bate.
- Guardar el comando
Etapa 9: Aplanar los datos
De forma similar al último ejercicio, utiliza una unión cartesiana en un comando de consulta avanzada desde el conector de transformación tabular para aplanar el conjunto de datos.
- Añade un comando Consulta avanzada desde el conector de Transformación tabular a la cadena.
- Conecta tus comandos Matriz a CSV - Mezclas y Matriz a CSV - Complementos al comando Consulta avanzada.
- Pon nombre al comando: Consulta avanzada - Aplanar objeto JSON.
- En la sección Tablas, haz clic en el botón Añadir a una vez para que haya dos tablas disponibles. Completa la sección Tablas según se indica a continuación:
| Archivo | Nombre de tabla |
| Archivo convertido Resultado desde el comando a CSV - Bateadores. | Bateador |
| Archivo convertido Resultado desde el archivo a CSV - Comando Toppings. | Arriba |
-
En el parámetro Consulta, introduce la consulta siguiente:
Selecciona '<JSON FILE ITERATION>' como Variedad, Mezcla, Complemento de mezcla, Complemento
-
- <JSON FILE ITERATION> debe seleccionarse y sustituirse expandiendo Iterador de grupo desde el panel Variable y seleccionando Iteración de archivos JSON.
- Una vez seleccionada la Variable de Iteración del Archivo JSON, haz clic en la burbuja verde, se abrirá el formulario de transformación de la Variable.
- Aplica la transformación de variable Obtener valor a partir de JSON utilizando variedad para el campo Valor.
- Asegúrate de pulsar intro después de escribir variedad y acepta la transformación.
- Especifica Coma para los parámetros Delimitador de entrada y Delimitador de salida.
- Comprueba la opción Vista previa de resultados.
- Guarda el comando.
Etapa 9: Evaluar el ejercicio
- Publica en la Cadena.
- Haz clic en Ejecutar y selecciona Ejecutar cadena.
- Una vez completada la Cadena,
- Haz clic en el nodo Consulta avanzada - Aplanar objeto JSON y selecciona la pestaña Resultados. Confirma el recuento de Registros de cada iteración:
- Iteración 1: 28 Registros.
- Iteración 2: 5 Registros.
- Iteración 3: 8 Registros.
- Haz clic en Vista previa de resultados (icono del ojo) Confirma que los datos coinciden para cada iteración.
- Haz clic en el nodo Consulta avanzada - Aplanar objeto JSON y selecciona la pestaña Resultados. Confirma el recuento de Registros de cada iteración:
Para obtener más información sobre la transformación de datos mediante Cadenas, consulta Rutas de aprendizaje conectadas - Introducción a la transformación.