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

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Cómo descargar datos eficientemente con UNLOAD?

31/33
Recursos

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Super, he aprendido mucho… Explica super bien, sinceramente tome este curso para aprender y estoy conforme.

Resultados

El parámetro MANIFEST crear un archivo en formato JSON con el detalle de las rutas y tamaño se los archivos creados, ejemplo:

Nombre de archivo: unload_test_3manifest

Contenido

{
  "entries": [
    {"url":"s3://almacenamiento/unload/unload_test_30000_part_00.zst", "meta": { "content_length": 7591016 }},
    {"url":"s3://almacenamiento/unload/unload_test_30001_part_00.zst", "meta": { "content_length": 7589291 }}
  ]
}

El parámetro PARTITION BY crea los archivos de acuerdo al resultado de la agrupación de la tabla por la columna o columnas indicadas (se creará una carpeta por cada grupo y se colocarán los archivos dentro)
Por ejemplo para si en la partición de especifica la columna C_REGION de la siguiente forma:

unload ('select*from unload_test_2')
TO 's3://almacenamiento/unload/unload_test_4_'
credentials 'aws_iam_role=identificador_rol'
allowoverwrite --Sobreescribir archivos existentes
delimiter ';' --Delimitador de columnas
header --Incluir cabecera de columnas
maxfilesize 500 mb --limitar el tamaño de archivo a 500 MB
zstd --crear archivo comprimido
manifest 
partition by (c_region) include 

Se creará la siguiente estructura de archivos en S3:

Carpetas:
unload_test_4_
unload_test_4_/c_region=AFRICA
unload_test_4_/c_region=AMERICA

Archivos:
unload_test_4_/manifest
unload_test_4_/c_region=AFRICA/0000_part_00.zst
unload_test_4_/c_region=AFRICA/0001_part_00.zst
unload_test_4_/c_region=AMERICA/0000_part_00.zst
unload_test_4_/c_region=AMERICA/0001_part_00.zst

CREATE TABLE unload_test AS (
SELECT * FROM cust_sales_intercalado 
UNION ALL
SELECT * FROM cust_sales_intercalado 
UNION ALL
SELECT * FROM cust_sales_intercalado 
);

SELECT COUNT(0) FROM cust_sales_intercalado; 

SELECT COUNT(0) FROM unload_test; 

unload ('select * from unload_test')
to 's3://mybucketredshiftsantiago/unload/unload_test_'
credentials 'aws_iam_role=arn:aws:iam::118590468211:role/MiRoleRedshift';


unload ('select * from unload_test')
to 's3://mybucketredshiftsantiago/unload/unload_test_'
credentials 'aws_iam_role=arn:aws:iam::118590468211:role/MiRoleRedshift'
parallel off
ALLOWOVERWRITE;

CREATE TABLE unload_test_2 AS (
	SELECT * 
	FROM unload_test
	LIMIT 2000000);

unload ('select * from unload_test_2')
to 's3://mybucketredshiftsantiago/unload/unload_test_4'
credentials 'aws_iam_role=arn:aws:iam::118590468211:role/MiRoleRedshift'
ALLOWOVERWRITE
delimiter ';'
header
maxfilesize 500 mb
ZSTD
manifest
partition by (c_nation) INCLUDE 
;

Al hacer manifest & partition by el comando unload me creo un folder

unload ('select * from unload_test_2')
to 's3://bucket-s3-de-.../unload/unload_test_'
credentials 'aws_iam_role=arn:'
allowoverwrite
delimiter ';' --Delimitador 
header --agrega el header
maxfilesize 500 mb -- El tamaño de archivo 
zstd --comprime el archivo: compresion estandar
manifest --crea archivo minifest
partition by (c_region) include --particiona los archivos de salida por esta columna
;

  1. Se cargó la tabla particionada por la columna c_mktsegment a S3:

  2. Se creó un archivo manifest indicando la ubicación y el tamaño de cada partición:

A alguien le dio problemas el crear archivos tan grandes? Porque a agosto 2021 la capa gratuita de AWS solo permite cargar 5 gb por mes a S3 y me dio miedo cargar archivos tan grandes como los del ejemplo del profe

Una nota del comando “INCLUDE”:

En algunos casos, el comando UNLOAD utiliza la opción INCLUDE como se muestra en la siguiente instrucción SQL.

unload (‘select * from lineitem’)
to 's3://mybucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole’
PARQUET
PARTITION BY (l_shipdate) INCLUDE;

En estos casos, la columna l_shipdate también está en los datos de los archivos Parquet. De lo contrario, los datos de la columna l_shipdate no están en los archivos Parquet.

importante
Si descarga archivos con la opción MANIFEST, debe utilizar la opción MANIFEST con el comando COPY cuando carga los archivos. Si utiliza el mismo prefijo para cargar los archivos y no especifica la opción MANIFEST, COPY produce un error porque supone que el archivo de manifiesto es un archivo de datos.

interesante