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 ha completado estos itinerarios, le recomendamos encarecidamente que los complete antes de completar éste.
Objetivo principal de aprendizaje | Capacidades del conector JSON |
Objetivos de aprendizaje secundarios | La potencia del comando de consulta avanzada de transformación tabular, la iteración y la transformación de variables |
Requisitos previos | |
Plantilla de la cadena de apoyo | CLP | Acceso a matrices JSON de objetos anidados |
Paso 1: Crear una cadena
- Añadir una nueva cadena
- Nombre de la cadena: CLP | Acceso a una matriz 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
- Salvar la cadena
Paso 2: Recuperar datos JSON
Utiliza el Conector HTTP para recuperar datos de donuts 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 GET desde el conector HTTP al nodo Inicio.
- Configure el Comando con lo siguiente:
Nombre | GET - Todos los postres |
Nombre de usuario | <dejar en blanco> |
Contraseña | <dejar en blanco> |
Certificado CA | <dejar en blanco> |
Certificado | <dejar en blanco> |
Clave privada del certificado | <dejar en blanco> |
Mostrar respuesta | Comprobado |
dirección URL|URL | cv-JSON-AllDonut Variable en cadena |
Cadena de consulta | <dejar en blanco> |
Tipo de contenido | application/json |
Respuesta | <dejar en blanco> |
- Guardar el comando
Paso 3: Convertir JSON a CSV
Utiliza el conector JSON para extraer claves de la matriz JSON e 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ñada un comando Array to CSV del conector JSON a la cadena.
- Conecte el nodo de inicio (GET - All Desserts) al comando Array to CSV .
- Nombre del comando: Matriz a CSV - Obtener Variedad.
- En el parámetro JSON Data , seleccione la salida Response del comando GET - All Desserts .
- Deje en blanco los parámetros Input Text, Path to root, y Filter .
- Deje el parámetro Delimitador multivalor como una coma (,).
- Marque la opción Preview Result .
- Introduzca variety para los parámetros Column Name y .name para los parámetros JSONPath .
- Seleccione Pipe para el parámetro Delimiter .
- Guardar el comando
Paso 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, deben añadirse números de fila al conjunto de datos. Estos números de fila se utilizarán en posteriores comandos de matriz a CSV para identificar el elemento de matriz (donut) para el que se analizará el objeto anidado (atributos).
Para aquellos familiarizados con el Constructor de Cadenas, puede que se pregunten por qué utilizamos Consulta Avanzada en lugar del Comando Añadir Números de Fila. El comando Añadir Números de Fila empieza a contar en uno (1) y nosotros necesitamos empezar a contar en cero (0) ya que los Arrays JSON están basados en cero.
- Añada un comando Advanced Query del conector Tabular Transformation a la cadena.
- Conecte la matriz con el comando CSV - Obtenga variedad con el comando Consulta avanzada .
- Nombre el Comando: Consulta Avanzada - Añadir Números de Fila.
- Configurar la sección Tablas
- En el campo File , especifique el Converted File Output from the Array to CSV - Get Variety Command.
- Introduzca variedades en el parámetro Nombre de tabla . La consulta especificada se ejecutará en esta tabla.
- En el parámetro Consulta, introduzca lo siguiente:
SELECT
ROW_NUMBER () OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- Especifique Pipe y Comma para los parámetros Input Delimiter y Output Delimiter , respectivamente.
- Compruebe el parámetro Preview results .
- Guarda el comando.
Paso 5: Crear una matriz JSON
Utilice el comando CSV a JSON del conector JSON para convertir la lista única de variedades en una matriz JSON. Un grupo de comandos puede iterar sobre cada elemento de esta matriz.
- Añada un comando CSV to JSON desde el conector JSON a la cadena.
- Conecte el comando Advanced Query - Add Row Numbers al comando CSV to JSON .
- Configure el Comando de la siguiente manera:
Nombre | CSV a JSON - Variedades |
Fichero de entrada | Resultado Salida del comando Consulta avanzada - Añadir números de fila |
Delimitador | Coma (,) |
- Guardar el comando
Paso 6: Añadir un grupo de comandos
Añada un grupo de comandos a la cadena para permitir la iteración sobre cada una de las variedades de donuts identificadas en el paso Consulta avanzada.
- Añada un grupo de mando a la cadena.
- Conecte el comando CSV to JSON - Varieties a la sección In del grupo de comandos.
- Haga clic en el grupo de comandos y seleccione el icono del cuentagotas para cambiar el color de los comandos a amarillo.
- Nombre del grupo: Variedades de rosquillas.
- Active la opción Iteraciones y seleccione Archivo JSON Salida del comando CSV a JSON - Variedades.
- Guarde el grupo de comandos.
Paso 7: Obtener la lista de ingredientes
Utiliza el comando Array to CSV del conector JSON para obtener la lista de toppings en el array JSON anidado. Esta acción se repite para cada una de las variedades de rosquilla.
⚠ Por favor, preste especial atención a la declaración de precaución en los siguientes pasos indicados por el signo de exclamación rojo.
- Añada un comando Array to CSV del conector JSON a la cadena.
- Conecte el grupo Inicio del grupo de comandos Variedades de rosquillas al comando Matriz a CSV .
- Nombre del comando: Array to CSV - Toppings.
- En el parámetro JSON Data , seleccione la respuesta Response Output del comando GET - All Desserts .
- Deje en blanco el parámetro Input Text .
- En el parámetro Path to root , aprovecharemos el valor de iteración para especificar el elemento del array sobre el que operará la iteración.
- Los siguientes pasos son críticos y deben ser leídos en su totalidad antes de completar este paso.
- Haga clic en el parámetro Path to root .En el panel de selección de variables, expanda el Iterador de grupo y haga clic en Iteración de archivo JSON.
- Haga clic en la burbuja verde JSON File Iteration en el parámetro Path to root. Se abrirá el formulario Transformación de variables. Seleccione Obtener valor de JSON y haga clic en el signo más (+). Escriba RowNum (distingue mayúsculas de minúsculas) en el campo Value y pulse la tecla Intro. Haga clic en Aceptar.
- La variable debe tener un asterisco que indica que se ha aplicado una transformación de Variable.
- 🛑 Si alguno de estos pasos falla, elimine la Variable de Iteración del Archivo JSON de la Ruta a la raíz y comience de nuevo.
- Después de la burbuja Iteración del archivo JSON, escriba arriba (minúsculas) y pulse la tecla intro.
- Los siguientes pasos son críticos y deben ser leídos en su totalidad antes de completar este paso.
- Deje en blanco el parámetro Filter .
- Deje el valor por defecto como coma (,), para el parámetro Multi-value Delimiter .
- Marque la opción Preview Result .
- En la sección Columnas, especificamos la(s) clave(s) en la matriz JSON para la(s) que extraer el(los) valor(es) a una columna en el CSV resultante.
- En el parámetro Column name , introduzca topping y en el parámetro JSONPath , introduzca .type.
- En el parámetro Delimitador , seleccione Coma.
- Guarda el comando.
Paso 8: Obtener la lista de bateadores
Utiliza el comando Array to CSV del conector JSON para obtener la lista de bateadores en el array JSON anidado. Esta acción se repite para cada una de las variedades de rosquilla. Como este paso es muy similar al anterior, copie el Comando configurado en el paso anterior y simplemente actualícelo para la información de los bateadores.
- Copiar la matriz a CSV - Toppings Comando.
- Conecte el Grupo Inicio del Grupo de Comandos Variedades de Donuts al Comando Array to CSV - Toppings (Copy) .
- Nombre del comando copiado: Matriz a CSV - Bateadores.
- En el parámetro Ruta a la raíz , elimine la burbuja superior haciendo clic en la X. Escriba bateadores (distingue entre mayúsculas y minúsculas) y pulse Intro. A continuación, escribe batter y pulsa Intro. Debería haber tres burbujas en el parámetro Path to root.
- Iteración de archivos JSON *
- bateadors
- bateador
- En la sección Columnas, cambie el Nombre de la columna de a por bate.
- Guardar el comando
Paso 9: Aplanar los datos
De forma similar al último ejercicio, utilice una unión cartesiana en un comando de consulta avanzada del conector de transformación tabular para aplanar el conjunto de datos.
- Añada un comando Advanced Query del conector Tabular Transformation a la cadena.
- Conectar la Matriz a CSV - Bateadores y Matriz a CSV - Toppings Comandos a la Consulta Avanzada Comando.
- Nombre del comando: Consulta avanzada - Aplanar objeto JSON.
- En la sección Tablas , haga clic una vez en el botón Añadir para que haya dos tablas disponibles. Complete la sección de Tablas según se indica a continuación:
Archivo | Nombre de tabla |
Archivo convertido Salida de la matriz a CSV - Bateadores Comando | Bateador |
Archivo convertido Salida de la matriz a CSV - Toppings Comando | Topping |
-
En el parámetro Consulta, introduzca la siguiente consulta:
Select '<JSON FILE ITERATION>' as Variety,Batter,Topping from Batter,Topping
-
- <JSON FILE ITERATION> debe seleccionarse y sustituirse expandiendo Group Iterator del panel Variable y seleccionando JSON File Iteration.
- Después de seleccionar la Variable de Iteración del Archivo JSON, haga clic en la burbuja verde, esto abrirá el formulario de transformación de la Variable.
- Aplique la transformación Get Value from JSON Variable utilizando variedad para el campo Value.
- Asegúrate de pulsar intro después de teclear variedad y ¡Acepta la transformación!
- Especifique Coma para los parámetros Delimitador de entrada y Delimitador de salida .
- Marque la opción Previsualizar resultados .
- Guarda el comando.
Paso 9: Probar el ejercicio
- Publique la Cadena.
- Haga clic en Ejecutar y, a continuación, seleccione Ejecutar cadena.
- Una vez completada la Cadena,
- Haga clic en el nodo Consulta Avanzada - Aplanar Objeto JSON y seleccione la pestaña Salidas. Confirme el recuento de registros para cada iteración:
- Iteración 1: 28 registros
- Iteración 2: 5 registros
- Iteración 3: 8 registros
- Haga clic en Previsualizar resultados (icono del ojo) Confirme las coincidencias de datos para cada iteración.
- Haga clic en el nodo Consulta Avanzada - Aplanar Objeto JSON y seleccione la pestaña Salidas. Confirme el recuento de registros para cada iteración:
Para obtener más información sobre la transformación de datos mediante cadenas, consulta Connected Learning Paths - Transformation Introduction