En esta Ruta de aprendizaje conectada, crearemos una Cadena que ilustra cómo convertir un conjunto de datos JSON con objetos anidados a CSV. Además, exploraremos cómo utilizar una unión cartesiana para aplanar esta estructura anidada.
Objetivo principal de aprendizaje | Conector JSON para objetos JSON anidados |
Objetivos de aprendizaje secundarios | Transformación tabular Comando de consulta avanzada |
Requisitos previos | Configurar la conexión del conector JSON Configurar la conexión del conector HTTP |
Plantilla de apoyo | CLP | Acceso a objetos anidados JSON |
Paso 1: Crear una cadena
- Añadir una nueva cadena
- Nombre de la cadena: CLP | Acceso a objetos anidados JSON
- Crear una variable de cadena
- Nombre: cv-JSON-Donut
- Valor: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- Salvar la cadena
Paso 2: Recuperar datos JSON
Utilice el conector HTTP para recuperar datos relacionados con el recuento en formato JSON desde una ubicación web.
- Añada un comando GET desde el conector HTTP al nodo Inicio
- Configure el Comando con lo siguiente:
Nombre GET - Datos JSON 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-Donut Variable en cadena Cadena de consulta <dejar en blanco> Tipo de contenido application/json Respuesta
<dejar en blanco>
- Guardar el comando
Paso 3: Obtener datos JSON no anidados
Utiliza el comando Objeto a CSV del conector JSON para extraer las claves de nombre y tipo, que no están anidadas, del objeto JSON.
Es importante comprender el esquema del conjunto de datos JSON. Para visualizar el esquema se puede utilizar el comando List File Content del conector File Utilities . Como referencia, a continuación se muestra el esquema JSON del donut:
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"}]}
- Añada un comando Object to CSV desde el conector JSON a la cadena.
- Conecte el nodo de inicio (GET - Datos JSON) al comando Object to CSV .
- Nombre el comando: Objeto a CSV - Nombre y Tipo.
- En el parámetro JSON Data , seleccione la respuesta Response Output del comando GET - JSON Data.
- Deje en blanco los parámetros Input Text y Path to root .
- Deje el parámetro Delimitador multivalor como una coma (,).
- Marque la opción Preview Result .
- Seleccione Pipe para el parámetro Delimiter .
- La sección Columnas se utiliza para especificar qué elementos del objeto JSON se extraerán a un conjunto de datos en columnas (CSV). Haga clic una vez en el botón Add para añadir dos columnas.
- En la primera columna, introduzca nombre para la Nombre de columna y .nombre para los parámetros JSONPath.
- En la segunda columna, introduzca tipo para la columna tipo y .tipo para los parámetros JSONPath.
- Guardar el comando
Paso 4: 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.
- Añade un comando de matriz a CSV desde el conector JSON a la cadena.
- Conecte el comando GET - Datos JSON al comando Array a CSV.
- Editar el comando
- Nombre del comando: Array to CSV - Toppings.
- En el parámetro JSON Data , seleccione la respuesta Response Output del comando GET - JSON Data .
- Deje en blanco el parámetro Input Text .
- En el parámetro Path to root , escriba topping (en minúsculas) y pulse la tecla intro. Topping debería aparecer en una burbuja gris.
- Deje en blanco el parámetro Filter .
- Deje el valor por defecto, coma (,), para el parámetro Delimitador multivalor .
- 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_type y en el parámetro JSONPath , introduzca .type.
- En el parámetro Delimitador , seleccione Tubo.
- Guarda el comando.
Paso 5: Obtener una lista de los bateadores
Utiliza el comando Array to CSV del conector JSON para obtener la lista de bateadores en el array JSON anidado.
Utilice dos comandos Array to CSV para extraer los rebozados y los toppings debido al diferente anidamiento de cada array. El uso de un comando Object to CSV con JSONPaths anidados (por ejemplo, .topping[*].type) habría creado valores multiparte que son más difíciles de utilizar en un conjunto de datos CSV.
- Añada un comando Array to CSV del conector JSON a la cadena.
- Conecte el comando GET - JSON Data al comando Array to CSV .
- Nombre del comando: Matriz a CSV - Bateadores.
- En el parámetro Datos JSON , seleccione la Respuesta Salida del comando GET - Datos JSON
- Deje en blanco el parámetro Input Text .
- En el parámetro Path to root , escriba batters (en minúsculas) y pulse la tecla intro. A continuación, escribe batter (en minúsculas) y pulsa la tecla intro. Los bateadores y bateador deben aparecer en este orden en dos burbujas grises.
- Deje en blanco el parámetro Filter .
- Deje el valor por defecto, coma (,), para el parámetro Delimitador multivalor .
- 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 batter_type y en el parámetro JSONPath , introduzca .type.
- En el parámetro Delimiter , seleccione Pipe
- Guarda el comando.
Paso 6: Aplanar los datos
Utilice una unión cartesiana en un comando de consulta avanzada del conector de transformación tabular para aplanar el conjunto de datos. Una unión cartesiana crea todas las combinaciones posibles de los elementos que hemos extraído utilizando los comandos Object to CSV y Array to CSV.
- Añada un comando Advanced Query del conector Tabular Transformation a la cadena.
- Conecte cada uno de los comandos Object to CSV - Name & Type, Array to CSV - Batters, y Array to CSV - Toppings al comando Advanced Query .
- Nombre del comando: Consulta avanzada - Aplanar objeto JSON.
- En la sección Tablas , haga clic dos veces en el botón Añadir para que haya tres tablas disponibles. Complete la sección de Tablas según se indica a continuación:
Archivo | Nombre de tabla |
Seleccione el archivo convertido Salida del objeto a CSV - Nombre y tipo Comando | Nombre |
Seleccione el archivo convertido Salida de la matriz a CSV - Bateadores Comando | Bateador |
Seleccione el archivo convertido Salida de la matriz a CSV - Toppings Comando | Topping |
- En el parámetro Consulta, introduzca la siguiente consulta:
Seleccione Tipo como tipo_de_postre, Nombre como variedad, Tipo_de_bate, Tipo_de_capa
de Nombre, rebozado, cobertura
- Especifique Pipe para los parámetros Input Delimiter y Output Delimiter .
- Marque la opción Vista previa de los resultados.
- Guarda el comando.
Paso 7: Probar la cadena y revisar los resultados
- Publique la Cadena.
- Haga clic en Ejecutar y, a continuación, seleccione Ejecutar cadena.
- Una vez completada la Cadena,
- Haga clic en el nodo Advanced Query - Flatten JSON Object y seleccione la pestaña Outputs .
- Confirme que el recuento de registros es 28
- Seleccione la pestaña Logs .
- Confirme que la vista previa de los datos coincide con la siguiente captura de pantalla.
- Haga clic en el nodo Advanced Query - Flatten JSON Object y seleccione la pestaña Outputs .
Para obtener más información sobre la transformación de datos mediante cadenas, consulta Connected Learning Paths - Transformation Introduction