はじめに
この前、次のプロジェクトで Redshift を使うかもしれないと教えてもらったので、ちょっと取り組んでみました。
この記事では Redshift クラスターを作る⇒S3 からサンプルデータをロード⇒クラスターを作り⇒クエリーを実行しました。
正直、ネットに Redshift の記事はたくさんあるので、最新の AWS の画面をキャプチャしておくみたいな記事です。
おおまかな作業の流れ
・ロールを作成
・サンプルデータのダウンロード
・S3にサンプルデータを配置
・Redshiftクラスターの作成
・クエリエディタを使ってみる
・クエリの実行
ロールを作成
今回は S3 からデータをロードするので AmazonS3ReadOnlyAccess ポリシーをアタッチしたロールを作成します。
-
信頼されたエンティティタイプに「AWSのサービス」を選択。
ユースケースでは、サービスに「Redshift」、ユースケースに「Redshift - Customizable」を選択。
-
ロール名に適当な名称を入力して「ロールを作成」ボタンをクリック。
(僕は実験段階だと zzz というプレフィックスをつけがち。)
サンプルデータのダウンロード
下記にサンプルデータが公開されています。
こちらから tickitdb.zip を取得しました。
https://docs.aws.amazon.com/ja_jp/redshift/latest/gsg/cm-dev-t-load-sample-data.html
tickitdb.zip には以下のファイルが入っています。
S3にサンプルデータを配置
※紙面の都合で、とりあえず allusers_pipe.txt だけアップロードしました。
Redshiftクラスターの作成
-
最初にサブネットグループを作成しておきます。
Redshiftの画面の左側のメニューで「設定 > サブネットグループ」を選択します。
-
クラスターの設定は以下を変更しました。
・クラスター識別子
・ノード
・データベース設定 > 管理者パスワード(「パスワードの生成」を選択)
・関連付けられた IAM ロール(先ほど作成したロールにチェックを入れた)
・追加設定は特に変更していないですが、必要に応じて見直してください。
設定したら「クラスターを作成」をクリック。
実際にやったときはクリックしてから作成完了まで体感 1 〜 2 分くらいだったと思います。
クエリエディタを使ってみる
-
ダイアログが開くので、「Database user name and password」を選択。画面下の方で、先ほど設定したユーザー名やパスワードを入力し「Create connection」をクリック。
-
接続できたら、テーブルを作成します。
テーブル定義は以下のページからいただきました。
https://docs.aws.amazon.com/ja_jp/redshift/latest/gsg/new-user-serverless.html
下記を入力して「Run」をクリックします。
create table users(
userid integer not null distkey sortkey,
username char(8),
firstname varchar(30),
lastname varchar(30),
city varchar(30),
state char(2),
email varchar(100),
phone char(14),
likesports boolean,
liketheatre boolean,
likeconcerts boolean,
likejazz boolean,
likeclassical boolean,
likeopera boolean,
likerock boolean,
likevegas boolean,
likebroadway boolean,
likemusicals boolean);
create table が成功すると、下記のように public の下に users ができていると思います。
「Load data」をクリックします。
ダイアログで「Load from S3 bucket」を選択して、先ほど S3 にアップロードしたファイルの URI を指定します。
あと「File options」をクリックして、Delimiter も指定しました。
次にロード先のテーブルを指定し「Load data」をクリック。
お待ちかね、ここまできたらクエリが実行できます!
クエリの実行
クエリを入力して Run します。
/* 例 */
select * from users where firstname = 'Rafael';
取り組んでみて
これで Redshift に入門できたかな。