Découvrir les types et fonctionnalités de données Redshift

Introduction à Redshift

Jason Myers

Principal Architect

Types de base

Types numériques

  • SMALLINT, INTEGER, BIGINT
  • DECIMAL / NUMERIC
  • DOUBLE PRECISION
  • REAL

Types date/heure

  • DATE
  • TIME, TIMETZ
  • TIMESTAMP, TIMESTAMPTZ

Types caractères

  • CHAR
  • VARCHAR

Type booléen

  • BOOLEAN
Introduction à Redshift

Types spéciaux

Type SUPER

  • Données semi-structurées
    • Tableaux
    • Tuples
    • Structures imbriquées (p. ex. JSON)
  • Utilise PartiQL pour les traiter
  • Taille max de 16 Mo

Type VARBYTE

  • données binaires (BLOB)
  • Images et vidéos
Introduction à Redshift

Types PostgreSQL non pris en charge :

Type PostgreSQL Types Redshift
DATETIME TIMESTAMP, TIMESTAMPTZ
SERIAL INTEGER, BIGINT
UUID VARCHAR
JSON SUPER, VARCHAR
ARRAY SUPER, VARCHAR
BIT BOOLEAN, SMALLINT, VARCHAR
Introduction à Redshift

Afficher les colonnes et leurs types

-- View the column details
SELECT column_name, 
       data_type, 
       character_maximum_length AS character_max_len,
       numeric_precision, 
       numeric_scale
  -- Using a view with both internal and external schema's columns
  FROM SVV_ALL_COLUMNS 
 -- Only in the spectrumdb schema
 WHERE schema_name = 'spectrumdb'
   -- For the ecommerce_sales table
   AND table_name = 'ecommerce_sales';
Introduction à Redshift

Afficher les colonnes et leurs types (suite)

column_name                  | data_type         | character_max_len | numeric_precision | numeric_scale
=============================|===================|===================|===================|==============
year_qtr                     | character varying | 100               | null              | null
total_sales                  | integer           | null              | 32                | 0
ecom_sales                   | integer           | null              | 32                | 0
percent_ecom                 | real              | null              | null              | null
percent_change_quarter_total | real              | null              | null              | null
percent_change_quarter_ecom  | real              | null              | null              | null
percent_change_year_total    | real              | null              | null              | null
percent_change_year_ecom     | real              | null              | null              | null
Introduction à Redshift

« Compatibilité » des types de données

  • Conversion implicite : affectations, comparaisons
  • Bien vérifier les résultats !
Type source Types cibles
CHAR VARCHAR
DATE CHAR, VARCHAR, TIMESTAMP, TIMESTAMPTZ
TIMESTAMP CHAR, DATE, VARCHAR, TIMESTAMPTZ
BIGINT BOOLEAN, CHAR, DECIMAL, DOUBLE PRECISION, INTEGER, REAL, SMALLINT, VARCHAR
DECIMAL BIGINT, CHAR, DOUBLE PRECISION, INTEGER, REAL, SMALLINT, VARCHAR
1 https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html#r_Type_conversion
Introduction à Redshift

Conversion explicite des types

  • CAST
-- Casting a decimal to a integer and aliasing it
SELECT CAST(2.00 AS INTEGER) AS our_int;
our_int
========
2
(1 row)
Introduction à Redshift

Fonctions TO

  • TO_CHAR, TO_DATE, TO_NUMBER
-- Convert the string to a date
SELECT CAST('14-01-2024 02:36:48' AS DATE) AS out_date;
date/time field value out of range: "14-01-2024 02:36:48"
HINT:  Perhaps you need a different "datestyle" setting.
-- Parse the string to a date
SELECT TO_DATE('14-01-2024 02:36:48', 'DD-MM-YYYY') AS our_date;
our_date
========
2024-01-14
(1 row)
Introduction à Redshift

Fonctions TO (suite)

-- Get the name of the month in a date
SELECT TO_CHAR(date '2024-01-14', 'MONTH') AS month_name;
month_name
========
JANUARY
(1 row)
  • Chaînes de format Date/heure et Numérique
1 https://docs.aws.amazon.com/redshift/latest/dg/r_FORMAT_strings.html
Introduction à Redshift

Passons à la pratique !

Introduction à Redshift

Preparing Video For Download...