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入門

¡Vamos a practicar!

Redshift入門

Preparing Video For Download...