Manejo de Tipos de Datos en Amazon Redshift
Clase 19 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:14 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
Viendo ahora - 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
02:00 min - 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:25 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 los tipos de datos que maneja Redshift, y como ya lo sabes, Redshift está basado en PostgreSQL, de manera que si estás familiarizado con los tipos de datos de PostgreSQL esta clase se te facilitará.
Como otras bases de datos, Redshift maneja datos de tipo numérico, texto, de lógica booleana y estos datos tienen ciertas particularidades.
Tipos de datos para texto:
En estos tipos de datos almacenaremos caracteres y cadenas de texto como pueden ser nombres, direcciones, descripciones, etc.
Lo más importante que debes saber al momento de manejar estos tipos de datos es que el parámetro que le indiques a cada dato no es la longitud, es el número de bytes que trabajará, de manera que un dato VARCHAR(2) no indica que reciba 2 caracteres de longitud, sino que el contenido es de 2 bytes.
CREATE TABLE test_tipo_dato ( dato varchar(2) ) insert into test_tipo_dato values ('AA'); insert into test_tipo_dato values ('€');
Si ejecutas las anteriores sentencias notarás que el primer insert se ejecuta sin ningún problema, “A” es un carácter que solo ocupa 1 byte. De modo que “AA” ocupa un total de 2 bytes. Pero, la segunda sentencia de insert falló y esta solo contiene un carácter “€”, esto ocurre por que este carácter tiene una longitud de 3 bytes por sí solo, de manera que rompe la restricción de tipo de dato VARCHAR(2).
Como ves los tipos de dato BPCHAR son convertidos por Redshift a CHAR y los tipos de dato TEXT a VARCHAR; también es importante tener en cuenta que un dato CHAR de 10, siempre ocupara 10 bytes, y dado el caso que el dato guardado no complete los 10 bytes Redshift lo completa con espacios en blanco, esto no ocurre en el tipo de dato VARCHAR.
Compruébalo tú mismo:
create table test_char ( dato char(10) ); insert into test_char values ('dato'); select * from test_char;
Tipos de datos numéricos:
Estos tipos de datos se deben usar para el manejo de números, en casos como cantidades, medidas, llaves únicas etc, los datos numéricos pueden ser enteros, decimales y de coma flotante.
Enteros:
Para el manejo de datos decimales, decimal(precisión, escala), debes tener en cuenta que se manejan dos parámetros, la precisión y la escala.
Para explicarte como funciona usemos un ejemplo:
create table test_decimal ( dato decimal(4,2) ); insert into test_decimal values (4581.54); insert into test_decimal values (121.7); insert into test_decimal values (12.21); insert into test_decimal values (12.2); insert into test_decimal values (12.21222);
Como puedes observar los dos primeros “insert” fallaron, y quizá te estés preguntando, ¿por qué ocurrió esto? si en la sentencia dice 4 enteros y 2 decimales… pero no, el valor de precisión (4 para este ejemplo) indica el número total de dígitos que puede recibir, y escala indica el número de decimales que se trabajarán, de modo que en realidad este dato puede máximo guardar un número de 2 enteros y 2 decimales (4,2), pero ¿y la última sentencia insert que tenía 2 enteros y 5 decimales? ¿por qué funcioné?, bueno Redshift nota que el número de enteros es válido y solo redondea las cifras decimales a 2 dígitos para este caso.
Otros tipos de dato:
Los valores de fecha como date, timestamp, timestampz se manejan como cualquier otra base de datos, también los tipos de dato bool, boolean, los cuales solo pueden recibir un byte de longitud.
A continuación te comparto la tabla que usa Redshift para el manejo de tipos de datos.