Mengenal tipe data dan fitur Redshift

Pengantar Redshift

Jason Myers

Principal Architect

Tipe data dasar

Tipe numerik

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

Tipe tanggal/waktu

  • DATE
  • TIME, TIMETZ
  • TIMESTAMP, TIMESTAMPTZ

Tipe karakter

  • CHAR
  • VARCHAR

Tipe Boolean

  • BOOLEAN
Pengantar Redshift

Tipe data khusus

Tipe SUPER

  • Data semiterstruktur
    • Array
    • Tuple
    • Struktur bertingkat (mis. JSON)
  • Gunakan PartiQL untuk memprosesnya
  • Ukuran maks 16MB

Tipe VARBYTE

  • data biner (BLOB)
  • Gambar dan Video
Pengantar Redshift

Tipe PostgreSQL yang tidak didukung:

Tipe PostgreSQL Tipe Redshift
DATETIME TIMESTAMP, TIMESTAMPTZ
SERIAL INTEGER, BIGINT
UUID VARCHAR
JSON SUPER, VARCHAR
ARRAY SUPER, VARCHAR
BIT BOOLEAN, SMALLINT, VARCHAR
Pengantar Redshift

Melihat kolom dan tipe datanya

-- 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';
Pengantar Redshift

Melihat kolom dan tipe datanya (lanj.)

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
Pengantar Redshift

"Kecocokan" tipe data

  • Konversi implisit: penugasan, perbandingan
  • Selalu cek hasilnya!
From Type To Types
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
Pengantar Redshift

Casting tipe data secara eksplisit

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

Fungsi 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)
Pengantar Redshift

Fungsi TO (lanj.)

-- 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)
  • String format Tanggal/Waktu dan Numerik
1 https://docs.aws.amazon.com/redshift/latest/dg/r_FORMAT_strings.html
Pengantar Redshift

Ayo berlatih!

Pengantar Redshift

Preparing Video For Download...