Primeros pasos en la arquitectura no transaccional

1

Objetivos y presentaci贸n del proyecto

2

Aprende qu茅 es un Data Warehouse

3

Bases de datos columnares y arquitectura orientada a optimizaci贸n de consultas

4

驴C贸mo funciona AWS Redshift?

Configura tu entorno de trabajo para Redshift

5

Creando nuestro entorno de trabajo en AWS

6

Configura tu primer cluster

7

Consumiendo Redshift: empieza la magia

8

Sentencias SQL en Redshift

C贸mo dise帽ar tu base de datos para mejorar su desempe帽o

9

驴Qu茅 es la compresi贸n en Redshift?

10

Algoritmos de compresi贸n con Redshift

11

Aplicando algoritmos de compresi贸n

12

An谩lisis de desempe帽o con diferentes tipos de compresi贸n

13

Estilos de distribuci贸n con Redshift

14

Evaluando los estilos de distribuci贸n

15

Llaves de ordenamiento para optimizar nuestras consultas

16

Aplicando ordenamiento de columnas

17

Evaluando algoritmos de ordenamiento

18

Buenas pr谩cticas para dise帽ar tablas en Redshift

19

Tipos de datos en AWS Redshift

20

Reto: mejora el desempe帽o de tu base de datos

Manipular enormes cantidades de datos

21

Olv铆date de los insert, el copy llego para quedarse

22

Cargando archivos tipo JSON

23

El comando copy a fondo

24

Manifiestos y uso de COMPUPDATE para carga con compresi贸n autom谩tica

25

M茅todos de carga alternativos al comando copy

26

驴C贸mo ejecutar sentencias UPDATE y DELETE?

27

驴C贸mo mantener el desempe帽o de tu base de datos?

28

Estad铆sticas y limpieza de las tablas

Buenas pr谩cticas para dise帽ar y ejecutar consultas en tu base de datos

29

Agrupamiento, ordenamiento y subqueries

30

驴Qu茅 es y c贸mo interpretar un explain plan?

An谩lisis de comportamiento y descarga de datos con Redshift

31

驴C贸mo descargar datos eficientemente con UNLOAD?

32

Otras tablas 煤tiles de Redshift para entender el comportamiento de nuestros datos

Conclusiones

33

Pr贸ximos pasos con AWS Redshift

Cargando archivos tipo JSON

22/33

Lectura

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 鈥渒ey鈥 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 鈥渒ey鈥 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 鈥渒ey鈥 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 鈥渏sonpaths鈥:

{
	"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.

redshift-table.png

Aportes 4

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Hay un error de sintaxis en el archivo de rutas jsonpaths luego de la ra铆z del archivo debe usarse corchetes en lugar de llaves quedando de esta forma:

{
	"jsonpaths": [
		"$['id']",
		"$['nombre']",
		"$['apellido']",
		"$['edad'][1]",
		"$['fechas'][1]['fecha_ingreso']"
	]
}

Muy buena explicaci贸n, todo muy simple y bien explicado. Gran comando el COPY.

interesante鈥