S3 に保管されたデータを QuickSight で可視化するまでの流れをブログ化しました。
「S3 は普段から利用しているが、QuickSight は未経験」という方向けの内容です。
目次
- はじめに
- Amazon QuickSightとは
- ハンズオン
- 次の学びに向けて
はじめに
システム運用を担当していると
「データが見たい」
「データを集計して欲しい」
という要望・作業依頼を受けることがあります。
データの属性によっては「業務での意思決定に必要」な場面も多く、また、「鮮度が重要なため常に最新のデータが必要」という理由により、割と高い温度感での集計実施を求められることが増えています。
その一方、昨今のマイクロサービスブームの影響により、必要な情報が複数のシステムに分散してしまい、「集計担当官」を設けなければ、欲しい情報1つすらままならない、という状況もちらほら見られます。
システムには「予め決められたことを、その通りに動作する」という原理原則があります。「データが見たい」という要望の裏には「いまのシステムでは欲しい情報が得られない」という悲しい現実があります。
もし「集計担当官」という役職を設けて、専属の作業者をアサインできるのであれば、集計作業自体は問題になりません。しかし、実際のところは「システム業務を担当するエンジニアが、付帯業務として集計を実施する」という運用方針になることが多いです。
これにより
①エンジニアは片手間で集計しているため、集計アウトプットが必ずしも高くはない
②「データが見たい」と依頼した人のもとには、その依頼とマッチするような結果が必ずしも得られない → 集計を再依頼する
という負のループが回ってしまうことがあります。
「データベース」と「データを見たい非エンジニア」
をスムーズに繋げるルートがない(間にエンジニアが入らなければデータのやり取りができない)ことが問題の原因のため、「ある程度の検索柔軟性を保ちつつ、非エンジニアでも操作可能なUIで、環境用意がエンジニアの作業負荷ならずに済むデータ可視化・集計システム」用意できれば、エンジニアを介さずとも「データを見たい」という要望を叶えることができます。
今回はその簡易的に作成できる可視化・集計システムの1つとして「Amazon QuickSight」に触れてみました。
Amazon QuickSightとは
Amazon QuickSight は、AWS がサーバレスで提供する BI(Business Intelligence)サービスの1つです。
BI サービスとしてデータの集計・可視化ができ、そのデータ参照先として「S3, RDS, Aurora, DynamoDB, Timestream」などの AWS サービス群が利用できます。
データ自体が存在するならば、自前で集計・可視化環境を構築せずとも、QuickSight 経由でそれらを実現することができます。
QuickSight で作成したダッシュボードは、Emailなどで別ユーザとも共有可能です。
(画像引用元: Amazon QuickSight の仕組み)
公式が QuickSight のサンプルを公開しているので、こちらをご覧になれば、QuickSight の表現の幅が伝わると思います。
日本語版: 小売り業界の売上分析ダッシュボード
英語版: Amazon QuickSight Gallery
ハンズオン
QuickSight のはじめの一歩として、「S3 に保存されたデータの可視化」をやってみます。
今回利用するリソースは
- Amazon S3
- Amazon QuickSight
の2つです。
可視化用のデータとして、以下を data.csv
として利用します。
id,name,age,gender,pc-os,mobile-os
00001,Ken,40,man,windows,android
00002,Judy,30,woman,windows,android
00003,Dybit,20,man,windows,ios
00004,Eubda,35,woman,windows,ios
00005,Ashton,30,man,mac,android
00006,Gwendolyn,25,woman,mac,android
00007,Cade,28,man,mac,android
00008,Jamie,41,woman,mac,ios
00009,Korbin,23,man,mac,ios
00010,Citlalli,32,man,mac,ios
S3の準備
今回のハンズオン用の S3 を作成して、data.csv をアップロードします。
S3 のデータを QuickSight で読み取るには、マニフェストファイルが必要になります。
公式がマニフェストファイルのフォーマットを公開しており、こちらをコピーして適切に加工すれば、そのまま利用できます。
{
"fileLocations": [
{
"URIs": [
"uri1",
"uri2",
"uri3"
]
},
{
"URIPrefixes": [
"prefix1",
"prefix2",
"prefix3"
]
}
],
"globalUploadSettings": {
"format": "CSV",
"delimiter": ",",
"textqualifier": "'",
"containsHeader": "true"
}
}
各項目の意味は
- fileLocations: QuickSight が取得するファイルの場所
- globalUploadSettings: ファイルの設定(ファイル形式、区切り文字、ヘッダーの有無)
なので、ハンズオンのファイル data.csv
に沿って記述すると以下になります。
{
"fileLocations": [
{
"URIs": [
"https://<S3のバケット名>.s3.amazonaws.com/data.csv"
]
}
],
"globalUploadSettings": {
"format": "CSV",
"delimiter": ",",
"containsHeader": "true"
}
}
サンプルデータをマニフェストファイルを、どちらもS3にアップロードしてしましょう。
以上で、S3の準備は完了です。
QuickSightの準備
まずは、QuickSight から指定の S3 に接続できるよう設定します。
AWS マネジメントコンソールから QuickSight に移動して、アカウント名から「QuickSight の管理」を選択します。
「セキュリティとアクセス権限」から QuickSight の AWS サービスへのアクセスを変更できます。
管理画面へ移動し、今回のハンズオン用に作成した S3 バケットを選択して、「保存」ボタンを選択します。
これで、QuickSight から S3 内バケットのデータにアクセスする準備が整いました。
QuickSight に S3 からデータインポート
QuickSight のホーム画面化で「新しい分析」→「新しいデータセット」を選択すると、インポート元として利用可能なサービス一覧が表示されます。
S3 を選択すると
- データソース名
- マニフェストファイルのアップロード
の入力が求められるので、それぞれ適切に入力します。
マニフェストファイルは S3 にアップロード済みなので、S3 オブジェクトに移動して、画面の「オブジェクトURL」をそのままコピー&ペーストするだけです。
データソース名、マニュフェストファイルの URL を入力後、「接続」をクリックするとデータインポート始まります。
インポートが成功すれば、以下のようのメッセージが表示されるので「視覚化する」をクリックすれば、QuickSight のダッシュボード画面に移動できます。
QuickSight で可視化
BI 画面に移動すると、以下のような画面が表示されます。
画面左側に
- age
- gender
- id
- mobile-os
- name
- pc-os
と項目が並んでおり、インポートした data.csv
に対応していることが分かります。
QuickSight は可視化・集計したい内容を利用者側で設定する必要があります。
「フィールドリスト」と「ビジュアルタイプ」を選択すると、QuickSight 側が自動で可視化してくれるので、いろいろ試してみましょう。
例1
フィールドリスト
- gender
ビジュアルタイプ
- ドーナッツグラフ
例2
フィールドリスト
- gender
- mobile-os
- pc-os
ビジュアルタイプ
- ピボットテーブル
データセットのインポートにさえ成功できれば、「項目選択 × 可視化方法の選択」だけで、QuickSight 側がいい感じのグラフを作成してくれます。
今回のハンズオンでは data.csv
を利用しましたが、インポートするデータを変えた上で可視化してみるのも面白いでしょう。
次の学びに向けて
本記事では
- 「QuickSight × S3」によるデータ可視化
のハンズオンを説明しました。
データセットがあれば QuickSight で簡単にデータ可視化が可能なことを知っていただき「QuickSight に触れてみる」機会に繋がればと思います。
今回の可視化程度では Excel で十分に代替可能なため、QuickSight を使う旨味が伝わっていないかもしれません。
次の学習ステップとして、以下がオススメです。
AWS に溜まったデータを QuickSight でサッと集計・可視化できれば、「データ活用」の幅が大きく広がると思います。
ここまでお付き合いいただき、ありがとうございました。