はじめに
AWSハンズオン for Beginnersシリーズとして提供されている「AWS Hands-on for Beginners 手を動かしながら学ぶ Analytics サービス入門」を実施した際のメモです。
データを活用する目的は、ビジネスの意思決定をするためです。
データ量が少なければ、表計算ソフトなどで可視化可能ですが、大容量となるとデータレイク、データウェアハウスなどを構築する必要が出てきます。
本ハンズオンでは、AWSのデータウェアハウスサービスであるAmazon Redshiftを使用し、データのロードをしたり、クエリを発行して結果を受け取ることを試してみます。また、Amazon QuickSightを使用して、Redshift内のデータの可視化も行います。
アジェンダ
- 今回のハンズオンで構成する構成等の紹介
- ハンズオンで構築する構成の紹介、インスタンスの作成を行う
- Amazon Redshift クラスターのセットアップ
- Amazon Redshift クラスターへのデータロード
- Amazon Redshift に対してクエリ実行
- Amazon QuickSight の概要
- Amazon QuickSight のセットアップ
- Amazon QuickSight を用いた可視化
- 本シリーズのまとめと次のステップ
- ハンズオン環境削除方法
メモ
分析手法とデータウェアハウス
分析対象のデータの規模によって手法を変える必要があります。
例えば、表計算ソフトでは企業単位のデータを扱うことが難しい、これはデータの転送時間やデータの共有などに大きく影響するためです。
RDBMSを使うと言う手もありますが、それでも対応できない規模のデータ(1TB以上)がある場合、データウェアハウスを使用することになります。
データウェアハウスは目的に合わせて加工済みのデータを格納します。
データの収集から分析、可視化まで流れ
アプリ=>OLTP DB=>ETL=>OLAP DB=>BIツール
※本ハンズオンではOLAP DBからBIツールまでの流れを体験する。
OLTP
ECサイト、ゲームアプリでよく使用される。
リアルタイム性、同時使用、高いレスポンスを備える。
検索、更新するデータ量は少ない場合が多い。
OLAP
大量のデータを複雑なクエリで分析する場合が多い。
同時に使用されることは少ない。
リアルタイム性は求められない場合が多い。
OLAPとしてのRedshift
Redshiftは列指向データベースです。行指向と異なり特定列のデータのみデータの取得分析が可能であり、効率が良いです。
Redshiftへの接続はクエリエディタから行います。
クエリエディタからSQL文を実行し、テーブル作成、データをSelectします。
クエリエディタのタブ1つに対して、クエリは1つしか実行できません。
用意されたDDLを実行するとusersテーブルはすでにあるとエラーがでました。クエリエディタを確認するとusersの他、salesなどのテーブルがすでに存在しているというものでした。おそらく、データベースをdevにしているため、サンプル用としてこれらテーブルがすでに用意されていると考えました。そのため、当該テーブルを手動で削除の上、ハンズオンを進めました。
RedshiftにはRDBと同じくスキーマという概念があります。デフォルトはpublicです。
Redshift データロードベストプラクティス
S3にデータを配置して、COPYコマンドを使用し、Bulk Loadする方法が効率よくデータをロードするベストプラクティスとされます。
COPY [テーブル名] FROM [S3パス] IAM_ROLE [IAMロールのARN];
- テーブル毎に1つのCOPYコマンドを実行します。
- データは複数ファイルに分割した方が効率良いです。
- データファイルはGZIPなどで圧縮すると転送効率がよくなります。
- 1ファイルあたり圧縮後、1MBから1GBに収まるサイズにすると転送効率がよくなります。
Redshiftで使用できるSQL構文
データを取得するクエリはSQL構文を使用できます。
SELECT
FROM
GROUP BY
ORDER BY
SUM
サブクエリ
テーブルの結合も可能です。
QuickSight
QuickSightは様々なAWSサービスと連携し、データを可視化できるサーバレスBIサービスです。
高速なインメモリデータベースであるSPICEを保有しているため、QuickSightのみでも、CSVをブラウザやS3から取り込んでBIできます。
QuickSightパフォーマンス
大量にデータがある場合、データはRedshiftに保存した方が効率良くなります。QuickSightはRedshiftからデータをクエリし、BIできます。
また、インメモリデータベースであるSPICEにクエリ結果をキャッシュし、パフォーマンスを上げることができます。
雑記1
現在、Standard版はなく、エンタープライズ版とエンタープライズ+Q版しかありませんでした。
後者を選択してみましたが、名前、電話番号入力後の画面で強制的に前画面に戻されてしまい、選択できませんでした。
雑記2
Redshiftの自動接続を使用してみたところ、権限がないとエラーになってしまいました。そのため、手動接続で実施しました。
雑記3
Redshift(クラスタ)、QuickSightともにセキュリティグループを設定できます。今回は各SGのインバウンドルールにそれぞれのセキュリティグループをソースとして追加し、相互接続を可能にしました。
QuickSightコンソールから配置するVPCサブネットを設定します。
雑記4
データ分析基盤は後々のニーズや拡張性を考慮し、疎結合であるべきです。つまり、データの蓄積、データの加工は1つの機能にまとめるのではなく、別々で管理すべきです。
データレイク
加工済みのデータを蓄積するのがデータウェアハウスです。必要なデータをすぐに分析できますが、様々なニーズに対応することが難しいとされます。
一方、データレイクは未加工のデータを蓄積し、必要な時にそれを加工し、分析する機構です。
データレイクの条件として、データを一元的、多様に管理できること、データを失わないことなどが挙げられ、AWSだとS3がそれを担います。
ハンズオンの感想
データ分析で使用するAWSサービスRedshift、QuickSightの初歩的な使い方を学ぶことができました。
今後データをビジネスに活用していく動きは多くなっていき、本ハンズオンで得た知識は今後携わるプロジェクトで役に立つと感じます。