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 de aprendizaje principal | Capacidad del conector JSON para objetos JSON anidados |
Objetivos de aprendizaje secundarios | Comando de consulta avanzada de transformación tabular |
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
- Agregar una nueva cadena
- Nombra 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
- Salva la cadena
Paso 2: recuperar datos JSON
Utilice el conector HTTP para recuperar datos relacionados con el recuento de personal en formato JSON desde una ubicación web.
- Agregue un comando GET desde el conector HTTP al nodo de 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 de cadena Cadena de consulta <dejar en blanco> Tipo de contenido aplicación/json Respuesta
<dejar en blanco>
- Guardar el comando
Paso 3: Obtener datos JSON no anidados
Utilice 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. Se puede utilizar un comando Listar contenido de archivo del conector Utilidades de archivo para visualizar el esquema. Como referencia, a continuación se muestra el esquema del 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":"Arándano"},{"id":"1004","type":"Devil's Food"}]},"topping":[{"id":"5001","type":"Ninguno"},{"id":"5002","type":"Glaseado"},{"id":"5005","type":"Azúcar"},{"id":"5007","type":"Azúcar glas"},{"id":"5006","type":"Chocolate con chispas"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]}
- Agregue un objeto al comando CSV desde el conector JSON a la cadena.
- Conecte el nodo de inicio (GET - datos JSON) al comando Objeto a CSV .
- Nombra el comando: Objeto a CSV - Nombre y tipo.
- En el parámetro Datos JSON , seleccione la Respuesta Salida del comando GET - Datos JSON .
- Deje los parámetros Texto de entrada y Ruta a la raíz en blanco.
- Deje el parámetro Delimitador multivalor como una coma (,).
- Marque la opción Vista previa del resultado .
- Seleccione Tubería para el parámetro Delimitador .
- 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 en el botón Agregar una vez para agregar dos columnas.
- En la primera columna, ingrese nombre para el Nombre de columna y .nombre para los parámetros JSONPath.
- En la segunda columna, ingrese type para el Tipo de columna y .type para los parámetros JSONPath.
- Guardar el comando
Paso 4: Obtenga la lista de ingredientes
Utilice el comando Matriz a CSV del conector JSON para obtener la lista de ingredientes en la matriz JSON anidada.
- Agregue una matriz al comando CSV desde el conector JSON a la cadena.
- Conecte el comando GET - JSON Data al comando Array to CSV.
- Editar el comando
- Nombre el comando: Matriz a CSV - Ingredientes.
- En el parámetro Datos JSON , seleccione la Respuesta Salida del comando GET - Datos JSON .
- Deje el parámetro Texto de entrada en blanco.
- En el parámetro Ruta a la raíz , escriba topping (en minúsculas) y presione la tecla Intro. Topping debería aparecer en una burbuja gris.
- Deje el parámetro Filtro en blanco.
- Deje el valor predeterminado, coma (,), para el parámetro Delimitador de múltiples valores.
- Marque la opción Vista previa del resultado .
- En la sección Columnas, especificamos la(s) clave(s) en la matriz JSON para la cual extraer los valores a una columna en el CSV resultante.
- En el parámetro Nombre de columna , ingrese ToppingID y en el parámetro JSONPath , ingrese .id.
- En el parámetro Nombre de columna , ingrese ToppingType y en el parámetro JSONPath , ingrese .type.
- En el parámetro Delimitador , seleccione Tubería.
- Guardar el comando.
Paso 5: Obtenga una lista de los bateadores
Utilice el comando Matriz a CSV del conector JSON para obtener la lista de bateadores en la matriz JSON anidada.
Utilice dos comandos de matriz a CSV para extraer las masas y los ingredientes debido a la diferente anidación de cada matriz. El uso de un comando de objeto a CSV con JSONPaths anidados (por ejemplo, .topping[*].type) habría creado valores de varias partes que son más difíciles de usar en un conjunto de datos CSV.
- Agregue una matriz a un comando CSV desde el conector JSON a la cadena.
- Conecte el comando GET - JSON Data al comando Array to CSV .
- Nombra el comando: Matriz a CSV - Batters.
- En el parámetro Datos JSON , seleccione la Respuesta Salida del comando GET - Datos JSON
- Deje el parámetro Texto de entrada en blanco.
- En el parámetro Ruta a la raíz , escriba batters (en minúsculas) y presione la tecla Intro. A continuación, escriba batter (en minúscula) y presione la tecla Enter. Batters y batter deben aparecer en este orden en dos burbujas grises.
- Deje el parámetro Filtro en blanco.
- Deje el valor predeterminado, coma (,), para el parámetro Delimitador de múltiples valores.
- Marque la opción Vista previa del resultado .
- En la sección Columnas, especificamos la(s) clave(s) en la matriz JSON para la cual extraer los valores a una columna en el CSV resultante.
- En el parámetro Nombre de columna , ingrese BatterID y en el parámetro JSONPath , ingrese .id.
- En el parámetro Nombre de columna , ingrese BatterType y en el parámetro JSONPath , ingrese .type.
- En el parámetro Delimitador , seleccione Tubería
- Guardar el comando.
Paso 6: Aplanar los datos
Utilice una unión cartesiana en un comando de consulta avanzada desde el Conector de transformación tabular para aplanar el conjunto de datos. Una unión cartesiana crea todas las combinaciones posibles de los elementos que extrajimos usando los comandos Objeto a CSV y Matriz a CSV.
- Agregue un comando Consulta avanzada desde el conector Transformación tabular a la cadena.
- Conecte cada uno de los comandos Objeto a CSV - Nombre y tipo, Matriz a CSV - Masas, y Matriz a CSV - Ingredientes al comando Consulta avanzada .
- Nombre el comando: Consulta avanzada - Aplanar objeto JSON.
- En la sección Tablas , haga clic en el botón Agregar dos veces para que haya tres tablas disponibles. Complete la sección Tablas según lo siguiente:
Archivo | Nombre de tabla |
Seleccionar archivo convertido Salida del objeto a CSV - Nombre y tipo de comando | Nombre |
Seleccionar archivo convertido Salida de la matriz a CSV - Comando Batters | Bateador |
Seleccionar archivo convertido Salida de la matriz a CSV - Comando Toppings | Cubierta |
- En el parámetro Consulta, ingrese la siguiente consulta:
Seleccione Tipo como tipo_de_postre, Nombre como variedad, Tipo_de_masa, Tipo_de_cobertura
de Nombre, Masa, Cobertura
- Especifique Pipe para los parámetros Delimitador de entrada y Delimitador de salida .
- Marque la opción Vista previa de resultados.
- Guardar el comando.
Paso 7: Pruebe la cadena y revise los resultados
- Publicar la Cadena.
- Haga clic en Ejecutar y luego 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 que el recuento de registros es 28
- Confirme que el recuento de registros es 28
- Seleccione la pestaña Registros .
- Confirme que la vista previa de los datos coincida con la siguiente captura de pantalla.
- Confirme que la vista previa de los datos coincida con la siguiente captura de pantalla.
- Haga clic en el nodo Consulta avanzada - Aplanar objeto JSON y seleccione la pestaña Salidas .
Para obtener más información sobre la transformación de datos mediante cadenas, consulte Rutas de aprendizaje conectadas: Introducción a la transformación!