[アドカレ2023] Amazon QuickSightで統計データを視覚化してみた

はじめに

みなさん、こんにちは。

アドベントカレンダー企画、12月22日担当の牛山です。

本日の記事では、S3、Athena、QuickSightを使用して、国や民間企業が提供している高等学校数の統計データを使用し、QuickSight上で視覚化してみたいと思います。

前置き

登場するAWSコンポーネントとして、Amazon S3、Amazon Athena、Amazon QuickSightとなります。

  • 各サービスの役割

    • Amazon S3
      視覚化する統計データを保存するストレージです。

    • Amazon Athena
      統計データにもとづくテーブルを作成し、Amazon S3に保存してある統計データをデータソースとして入れ込みます。

    • Amazon QuickSight
      Amazon Athenaをデータソースとして、データベースを取り込みます。

統計データの準備

今回、1948年 ~ 年度の高等学校数統計データを利用させていただき、Amazon QuickSight上で視覚化していきますので以下リンク先からCSVファイルをダウンロードします。

統計ダッシュボード - 時系列表

※リンク先にある「一括ダウンロード」を押すことでCSVファイルを入手できます。

入手した統計データは不要なデータが含まれますので加工します。

UTF8へ文字コードを変換

nkfコマンドでcsvファイルの文字コードを変換します。

nkf -w --overwrite TimeSeriesResult_20231218012732596.csv

※「TimeSeriesResult_」以降はそれぞれ読み替えてください。

細かな不要データを除く

以下コマンドで細かい部分を加工して、data.csvに書き込みます。

cat TimeSeriesResult_20231218012732596.csv | sed 's/"//g' | awk '{print $1, $2, $3, $4}' | sed -r 's/(年|速報)//g' | cut -d "," -f 1,2,3,4 > data.csv

S3へ統計データをアップロード

AWSマネージメントコンソールからS3サービス画面へ、いき、適当なバケットを作成します。
今回は「s3://data-lake-20231218/high_schools/data.csv」のようにしました。

※先ほど加工した統計データをアップロードするようにしてください。

Amazon Athenaへテーブルを作成

AWSマネージメントコンソールから「Amazon Athena」のサービスへ、いき「クエリエディタ」を選択します。

その後、設定タブをクリックします。

「クエリの結果の場所と暗号化」項目よりそれぞれ下記のように設定します。

  • クエリの結果の場所

    • s3://data-lake-20231218/high_schools/
  • クエリ結果を暗号化

    • 無効
  • 予期されるバケット所有者

    • AWSアカウントID
  • バケット所有者にクエリ結果に対する完全なコントロールを割り当てる

    • 有効

テーブル作成

「エディタ」タブで以下、クエリを実行します。
※デーブルとビュー項目、作成プルダウンメニューより「S3 バケットデータ」から同様のクエリを発行できます。

CREATE EXTERNAL TABLE IF NOT EXISTS `default`.`high_schools` (
  `year` int,
  `region_code` int,
  `region_name` string,
  `high_school_number` int
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('field.delim' = ',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://data-lake-20231218/high_schools/'
TBLPROPERTIES ('classification' = 'csv');

※LOCATION箇所は、各自の環境に合わせてください。

SQLを実行すると上記画像の通り、テーブル項目にテーブルが出来上がります。

今度は作成したテーブルに対して、統計データを以下コマンドで入れ込んでいきます。

SELECT *
FROM default.high_schools

取込み結果として2380件のデータが取り込まれ、取り込まれたデータについても想定したものになっていそうです。

Amazon QuickSightで視覚化

AWSマネージメントコンソールのより「Amazon QuickSight」サービス画面にいきます。
初回はセットアップがあるので初めて使われる方は、適宜初期設定をおこなってください。

権限設定

ここでは要点のみお伝えします。

Amazon QuickSightのリージョンが東京になっていることを確認し、セキュリティとアクセス権限
より、Amazon S3とAmazon Athenaに付与されたアクセスがあることを確認します。

※ない場合、管理から設定をおこなってください。
 作成したS3バケットへのアクセスが有効になっていることも確認します。

データセット作成

「新しいデータセット」をクリックし、「Athena」を選択します。


「新規 Athena データソース」に遷移するので「データソース名」を「high_schools」とし、「データソース作成」を押します。

「テーブルの選択」に遷移するので「テーブル: 可視化できるデータを含みます。」項目で「high_schools」にチェックを入れ、「選択」をクリックします。

「データセット作成の完了」に遷移するので何も変更せず「Visualize」をクリックします。

「Visualize」クリック後、グラフ作成画面に自動的に遷移します。

ビジュアルタイプとして「垂直棒グラフ」を選びます。

X軸に「year」を指定し、値に「high_school_number」を指定します。

「high_school_number」の三点リーダをクリックし集計を「合計」へ変更します。

この状態ではノイズがあり、グラフが綺麗に見えないので以下画像のようにフィルター
を活用し、データを除外したりすることでもっともらしいグラフになります。

また、region_nameを選択すると都道府県別の高等学校数を確認できたりします。
パラメータを変更することで簡単にグラフを変更できるので是非、みなさんも
一度は試してみても良いかもしれません。


おわりに

統計データの準備 ~ データの分析、視覚化までおこなってみました。

簡単にグラフに表現できることがわかりました。

AWSで分析してみたい!といった方のご参考になれば幸いです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA