Super, he aprendido mucho… Explica super bien, sinceramente tome este curso para aprender y estoy conforme.
Primeros pasos en la arquitectura no transaccional
Objetivos y presentación del proyecto
Aprende qué es un Data Warehouse
Bases de datos columnares y arquitectura orientada a optimización de consultas
¿Cómo funciona AWS Redshift?
Configura tu entorno de trabajo para Redshift
Creando nuestro entorno de trabajo en AWS
Configura tu primer cluster
Consumiendo Redshift: empieza la magia
Sentencias SQL en Redshift
Cómo diseñar tu base de datos para mejorar su desempeño
¿Qué es la compresión en Redshift?
Algoritmos de compresión con Redshift
Aplicando algoritmos de compresión
Análisis de desempeño con diferentes tipos de compresión
Estilos de distribución con Redshift
Evaluando los estilos de distribución
Llaves de ordenamiento para optimizar nuestras consultas
Aplicando ordenamiento de columnas
Evaluando algoritmos de ordenamiento
Buenas prácticas para diseñar tablas en Redshift
Tipos de datos en AWS Redshift
Reto: mejora el desempeño de tu base de datos
Manipular enormes cantidades de datos
Olvídate de los insert, el copy llego para quedarse
Cargando archivos tipo JSON
El comando copy a fondo
Manifiestos y uso de COMPUPDATE para carga con compresión automática
Métodos de carga alternativos al comando copy
¿Cómo ejecutar sentencias UPDATE y DELETE?
¿Cómo mantener el desempeño de tu base de datos?
Estadísticas y limpieza de las tablas
Buenas prácticas para diseñar y ejecutar consultas en tu base de datos
Agrupamiento, ordenamiento y subqueries
¿Qué es y cómo interpretar un explain plan?
Análisis de comportamiento y descarga de datos con Redshift
¿Cómo descargar datos eficientemente con UNLOAD?
Otras tablas útiles de Redshift para entender el comportamiento de nuestros datos
Conclusiones
Próximos pasos con AWS Redshift
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 8
Preguntas 0
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
;
Se cargó la tabla particionada por la columna c_mktsegment a S3:
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?