Cargar datos JSON a Redshift usando el comando Copy
Clase 22 de 33 • Curso de AWS Redshift para Manejo de Big Data
Contenido del curso
Configura tu entorno de trabajo para Redshift
Cómo diseñar tu base de datos para mejorar su desempeño
- 9

Compresión de Datos en Repsheet: Algoritmos y Aplicaciones
10:09 min - 10

Algoritmos de Compresión de Datos: Musley y Otros Métodos Eficientes
13:18 min - 11

Compresión de Datos en SQL: Evaluación y Comparación de Algoritmos
10:42 min - 12

Compresión de Datos en Repsheet: Optimización y Análisis
12:04 min - 13

Algoritmos de Distribución de Datos en Repsheet
05:47 min - 14

Distribución de Datos en Tablas SQL con Repsheet
15:15 min - 15

Llaves de Ordenamiento en Bases de Datos: Compuesta vs. Intercalada
06:36 min - 16

Pruebas de Algoritmos de Ordenamiento en SQL con AWS S3 y Redshift
13:26 min - 17

Consultas SQL y Algoritmos de Ordenamiento Avanzados
13:20 min - 18

Optimización de Datos en Data Warehouses con Repsheet
08:48 min - 19

Manejo de Tipos de Datos en Amazon Redshift
02:38 min - 20

Optimización de Bases de Datos en Modelos Dimensionales
13:15 min
Manipular enormes cantidades de datos
- 21

Carga Masiva de Datos en Repshit con el Comando COPY
06:15 min - 22

Cargar datos JSON a Redshift usando el comando Copy
Viendo ahora - 23

Parámetros Comunes del Comando COPY en Amazon Redshift
12:09 min - 24

Carga Masiva de Datos sin Delimitador en RedSheet
15:46 min - 25

Inserción de Datos en Repsheet sin Archivos Planos
10:43 min - 26

Actualización Eficiente de Datos en Repsheet con Tablas Auxiliares
14:22 min - 27

Optimización de Bases de Datos con Analyze y Vacuum en Repsheet
08:03 min - 28

Optimización de Bases de Datos: Estadísticas y Limpieza de Tablas
12:26 min
Buenas prácticas para diseñar y ejecutar consultas en tu base de datos
Análisis de comportamiento y descarga de datos con Redshift
Conclusiones
En esta clase conoceremos cómo cargar datos en formato json a Redshift con el comando Copy, ya conoces las ventajas de este comando, ahora veremos cómo llevar nuestros datos a Redshift dado el caso que nuestro origen de datos se encuentre en un formato json.
Lo primero que debemos saber es que existen dos formas de cargar los datos en formato json en Redshift, una es la forma automática, en donde cada “key” del archivo json debe hacer match con cada columna que queramos llenar de una tabla en Redshift.
Es importante saber que las columnas en Redshift se crean en minúsculas, de manera que las “key” del archivo en json deben estar en minúscula también. La segunda forma es especificando la estructura del archivo para que este pueda ser cargado a la tabla, para ello utilizaremos un archivo extra denominado jsonpaths.
Carga automática:
Usando la estructura de tabla que hemos manejado en este curso:
--Create table create table estudiante ( id int2, nombre varchar(20), apellido varchar(20), edad int2, fecha_ingreso date );
Crearemos una estructura en Redshift que pueda satisfacer las necesidades de esta tabla, de modo que puede quedar algo así (recuerda que los “key” del archivo se debe llamar igual que en la tabla):
{ "id": 4544, "nombre": "test_1", "apellido": "json_1", "edad": 33, "fecha_ingreso": "2020-08-01" } { "id": 23232, "nombre": "test_2", "apellido": "json_2", "edad": 22, "fecha_ingreso": "2020-08-03" }
Ahora lo subimos a S3 con el nombre que queramos y procedemos a cargarlo de la siguiente manera:
copy public.estudiante from 's3://[tu_propia_ruta_del_archivo_json]' credentials 'aws_iam_role=[tu_iam_role]' format as json 'auto' region '[tu_region]';
Como se ve en la gráfica, la tabla se encuentra cargada con los datos que existen en el archivo json.
Carga con jsonpaths:
Esta carga consiste en determinar una estructura basada en el archivo json que pueda ser insertada en la tabla, como sabemos en un archivo json podemos tener datos no estructurados, pero Redshift requiere de data estructurada; de manera que lo primero será crear un pequeño ejemplo de un archivo json con datos no estructurada.
{ "id": 4544, "nombre": "test_json3", "apellido": "test_json3", "edad": [ 24332, 33, 443, 323232, 43434 ], "fechas": [ { "id": 0, "fecha_ingreso": "2015-05-01" }, { "id": 1, "fecha_ingreso": "2016-05-30" } ] }
Vamos a suponer que de la lista de edades son la segunda posición o sea la posición [1] es la que yo requiero, y para las fechas, la fecha que en verdad me interesa es la contenida en el segundo bloque, para especificar estas reglas crearemos un nuevo archivo con la siguiente estructura y lo nombraremos “jsonpaths”:
{ "jsonpaths": [ "$['id']", "$['nombre']", "$['apellido']", "$['edad'][1]", "$['fechas'][1]['fecha_ingreso']" ] }
En donde el símbolo ($) indica la raíz del archivo json.
Ahora subimos nuestros dos archivos a S3 y ejecutamos la siguiente sentencia en nuestro editor SQL.
copy public.estudiante from 's3://[tu_propia_ruta_del_archivo_json]' credentials 'aws_iam_role=[tu_iam_role]' format as json 's3://[tu_propia_ruta_del_archivo_jsonpaths]' region 'tu_propia_region';
Y como vemos, el registro fue cargado exitosamente.