Redshift 데이터 타입과 기능 이해

Redshift 입문

Jason Myers

Principal Architect

기본 데이터 타입

숫자 타입

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

날짜/시간 타입

  • DATE
  • TIME, TIMETZ
  • TIMESTAMP, TIMESTAMPTZ

문자 타입

  • CHAR
  • VARCHAR

불리언 타입

  • BOOLEAN
Redshift 입문

특수 데이터 타입

SUPER 타입

  • 반정형 데이터
    • 배열
    • 튜플
    • 중첩 구조(예: JSON)
  • PartiQL로 처리
  • 최대 16MB

VARBYTE 타입

  • 바이너리 데이터(BLOB)
  • 이미지, 동영상
Redshift 입문

미지원 PostgreSQL 타입:

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

열과 데이터 타입 보기

-- 열 상세 보기
SELECT column_name, 
       data_type, 
       character_maximum_length AS character_max_len,
       numeric_precision, 
       numeric_scale
  -- 내부·외부 스키마 열을 포함한 뷰 사용
  FROM SVV_ALL_COLUMNS 
 -- spectrumdb 스키마만
 WHERE schema_name = 'spectrumdb'
   -- ecommerce_sales 테이블
   AND table_name = 'ecommerce_sales';
Redshift 입문

열과 데이터 타입 보기 (계속)

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
Redshift 입문

데이터 타입 호환성

  • 암시적 변환: 할당, 비교
  • 결과를 반드시 재확인하십시오.
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
Redshift 입문

명시적 타입 캐스팅

  • CAST
-- decimal을 integer로 캐스팅하고 별칭 지정
SELECT CAST(2.00 AS INTEGER) AS our_int;
our_int
========
2
(1 row)
Redshift 입문

TO 함수

  • TO_CHAR, TO_DATE, TO_NUMBER
-- 문자열을 날짜로 변환
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.
-- 문자열을 파싱해 날짜로 변환
SELECT TO_DATE('14-01-2024 02:36:48', 'DD-MM-YYYY') AS our_date;
our_date
========
2024-01-14
(1 row)
Redshift 입문

TO 함수 (계속)

-- 날짜에서 월 이름 얻기
SELECT TO_CHAR(date '2024-01-14', 'MONTH') AS month_name;
month_name
========
JANUARY
(1 row)
  • 날짜/시간 및 숫자 형식 문자열
1 https://docs.aws.amazon.com/redshift/latest/dg/r_FORMAT_strings.html
Redshift 입문

연습해 봅시다!

Redshift 입문

Preparing Video For Download...