【AWS】Amazon Redshift ~ 基本編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/07/124519
https://dk521123.hatenablog.com/entry/2020/02/22/002139

の続き。

QWIK Labs にある講座「Introduction to Amazon Redshift (日本語版)」
が無料でハンズオンラボを受けられるので、こちらをやりながら勉強してみる

https://amazon.qwiklabs.com/?locale=ja

目次

【0】今回、体験すること
【1】Redshift クラスタを作成する
【2】Redshift クラスタにデータをロードする
【3】Redshift クラスタに対して、クエリを発行する
【4】おまけ:テーブルのリネーム
【Z】やってみた感想

【0】今回、体験すること

1)Redshiftクラスタを構築
2)S3内のファイルをCOPYコマンドによりデータをロード
3)SQLコマンドにより、データを取得する

構成図

S3 = COPY command => Redshift <= SQL = User

【1】Redshift クラスタを作成する

Redshift クラスタを作成して、起動する。

メモ

「クラスターを作成する」ボタン押下し、
ラボに従って行えれば、特にはまらずにできる。

(必要なIAMやVPCの設定は既に用意してあるので楽だが
実際に自分で構築した場合は、この辺が大変そう)

【2】Redshift クラスタにデータをロードする

Redshift クエリ エディタ(っという名のRedshift のWebクライアント)を
起動し、以下を行う。
 ⇒ 左ペインの「エディタ」ってのがどこか分からかった。

1)CREATEテーブル発行
2)COPY発行

* COPYコマンドに関する詳細は、以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2021/07/21/214248

CREATE TABLEの一部

CREATE TABLE users
(userid INTEGER NOT NULL,
 username CHAR(8),
 firstname VARCHAR(30),
 lastname VARCHAR(30),
 ... 略 ...
 likeopera BOOLEAN,
 likerock BOOLEAN,
 likevegas BOOLEAN,
 likebroadway BOOLEAN,
 likemusicals BOOLEAN
);

COPYコマンド例

COPY users FROM 's3://your-backet/xxxx/allusers_pipe.txt'
CREDENTIALS 'aws_iam_role=arn:aws:iam::XXXXXXXXXXXXX:role/XXXXX-Role'
DELIMITER '|';

【3】Redshift クラスタに対して、クエリを発行する

【2】のSQL文発行の流れでSELECT文を実行すればいいだけ。

【4】おまけ:テーブルのリネーム

ALTER TABLE db_name.hello_world
RENAME TO hello_world_backup;

-- RENAME TO db_name.hello_world_backup;
-- で、DB名を指定するとエラーになった。

【Z】やってみた感想

Redshift を無料で体験できるのは嬉しいが
今回やった内容だけでは、RDS(PostgreSQL)でも
できるようなことなので、Redshiftならではな体験をしたかった。
この辺は、有料だが「Working with Amazon Redshift(日本語版)」で体験できそう。

関連記事

Amazon Redshift ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/04/07/124519
Amazon Redshift ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/22/002139
Amazon Redshift ~ COPY コマンド ~
https://dk521123.hatenablog.com/entry/2021/07/21/214248
Hiveテーブルデータ を Redshift に移行するには
https://dk521123.hatenablog.com/entry/2021/09/01/200818
Glue/Python から Redshift に接続することを考える
https://dk521123.hatenablog.com/entry/2020/08/26/193237
Glue/Spark から Redshift にデータ追加することを考える
https://dk521123.hatenablog.com/entry/2020/09/23/111741
EXPLAINステートメント
https://dk521123.hatenablog.com/entry/2020/08/30/000000