AWS Redshift でEverything It's you してみた！

DEA(AWS Certified Data Engineer - Associate 認定)の勉強を兼ね Redshift を触ろうと、そのメモです。
4つ目のAssociate認定試験として、2024年から新設されましたね。

https://aws.amazon.com/jp/certification/certified-data-engineer-associate/

https://aws.amazon.com/jp/blogs/news/aws-certification-retirements-and-launches/

個人的には、 AWS Certified Database – Specialty は残っても良かったと思うけど、


# Redshiftって？
フルマネージドのペタバイト級データウェアハウスサービスです。

https://aws.amazon.com/jp/redshift/

# 準備

とりあえず何かしらデータをということで、ChagGPTにお願いしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/c103fde9-e047-b0fb-e670-75206f0747e7.png)

このcsvファイルをS3にアップロードしておきます。


# クラスタの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/69cd6e26-dfd3-70b9-1f16-bc9cb48387ed.png)

以下以外はデフォルトのまま作成しました。

### データベース設定
「管理者パスワードを手動で追加する」にて、設定

### IAMロール
S3に対してアクセスが必要

しばらく待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/7fbb704f-91b8-d3a7-29b8-ac56fe1a96c0.png)

### 待つ

5分くらい待ちました。Availableになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/c9873359-424c-7a1a-40ff-fa78da21529b.png)


# クエリエディタ起動

クエリエディタv2を使ってS3からデータを集計してみます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/76261216-590c-3099-5f39-4599be1558cf.png)


こんな感じのエディタが起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/38dcb4f1-cd00-7e1d-c707-7d4c16bc15d6.png)


左にあるクラスターを選択するとクラスターへの接続を聞かれますので、ユーザー名とパスワードで接続します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/d69b7508-1ec4-05a4-4d6c-8e8f10f63e46.png)


接続されると以下のようにディレクトリが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/3ec0090f-3f03-7385-05b0-576d1cf806d5.png)


# S3からデータをロード


## Data Source を設定

「Load data」を押し、Data sourceを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/abb83089-d22e-6672-ba55-9b65b2f59e8f.png)

### File Formatで選択できるものは

フォーマット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/313ad508-a6af-0d13-dc4a-3d882d9086c0.png)

オプション

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/81aa011b-acb8-e879-a7de-6291b150ee98.png)

圧縮方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/8d8ea790-0bfc-de26-045e-fe944f43bef9.png)


### 参考までに

Load from local fileを選択した場合は以下の画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/ba848dba-c02c-d275-0348-f0a674aba63d.png)


## Table options を設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/c154b124-88bb-cd2a-b906-738717ff6881.png)

今回は新たにテーブルをロードするので、Load new table を選択します。
すると、S3にあるcsvファイルがロード、テーブルスキーマが解析され、以下の通りカラム情報が取得されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/5dc91f95-fa17-b2fd-0cbd-a4cebc041392.png)


IAM roleとSchmea Tableを設定し、テーブルを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/007e6ee4-35f0-9de2-76f7-240aaca350af.png)

作成に成功したらデータをロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/dfdea8d9-722f-dde1-1cb7-165dd83d3537.png)

クラスタにもテーブルがロードされているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/b7b0bdc1-7946-422b-1445-7a2bafbb1769.png)


# 実際にクエリを実行してみる

データのロードに成功したら、元の画面に戻るのでクエリを実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/7d4f99d8-4621-4d40-9a49-79d059227c5b.png)




## 全件取得

```
SELECT * from "everything-its-you";
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/5c168409-4b7a-b1c6-2d0e-273f2069ccca.png)

## リリース日指定

```
SELECT * from "everything-its-you"
WHERE "リリース日" = '1997-02-05';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/ddc29f12-4f06-2c87-0e2c-054d39f01776.png)

## Everything取得

```
SELECT * from "everything-its-you"
WHERE "タイトル" LIKE '%Everything%';

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/6965d37b-1a00-af0b-b40b-868cce8d70c6.png)

```

## ミリオンセール？？

```
SELECT * from "everything-its-you"
WHERE "総売上" >= 1000000;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/2fe94d3e-39aa-8c20-d649-cabc3c05eb17.png)


おやっと・・。よく見たらスキーマが間違えていましたね。「初週売上」と「総売上」が文字列扱いされてしまってます。


# スキーマを変更して正しく集計されるように

続く