
【AWS実践】Amazon AthenaとQuickSightで統計データをお手軽分析!
2024.08.15
この記事では、Amazon AthenaとAmazon QuickSightを使ったS3内のcsvファイルの分析を実践・紹介しています。
Amazon AthenaやAmazon QuickSightの用途を手軽に知りたいという方、今までAWSでデータ分析をしたことがないという方の一助になれば幸いです!
はじめに
Amazon Web Service(以下「AWS」)の強力なデータ分析基盤を使用してみたい、という方は非常に多くいらっしゃるのではないでしょうか。
そこで本記事では実例として、Amazon S3のバケットに配置したcsv形式データに対してAmazon Athenaからクエリ実行、その後Amazon QuickSightから分析するという一連の流れを紹介しています。
記事内では実施にあたっての結果や操作手順などを中心に紹介しております。
特に「今までクラウドのリソースを使ってデータ分析をしたことがない」という方や、「AWSは使ったことがあるけどAmazon AthenaやAmazon QuickSightは使ったことが無くてよく分からない」という方にぜひ参考にしていただきたい内容の記事です!
どうぞ最後までご覧ください!

Amazon S3、Athena、QuickSightって何?
まずここでは、今回紹介するAmazon S3とAmazon Athena、Amazon QuickSightについてざっくりサービス概要を紹介します。
既にこれらがどんなサービスなのかご存知の方は、次の「3.AWSでデータ分析を行うメリットは?」からお読みください。
Amazon S3概要
Amazon S3(Simple Storage Service)とは、データの保存やバックアップ、アーカイブ、ビッグデータの貯蔵などに使用できるオブジェクトストレージサービスです。
単なるストレージ用途のみならず、静的なWebページのホスティング、データレイク用途等もこなせる多機能性と、非常に高い耐久性(99.999999999%)や可用性を誇るサービスとなっています。
今回はこのAmazon S3にcsv形式の統計データを保管します。
参考:公式ドキュメントAmazon Athena概要
Amazon Athenaとは、サーバーレスでインタラクティブなクエリサービスです。基本的にAmazon S3に保管されているデータに対して、インフラの管理をすることなく標準SQLで簡単にクエリを実行できます。料金はスキャンしたデータの量や実行したクエリの回数に基づく従量課金制です。
今回は先述したAmazon S3に保管したcsvデータに対して、このAmazon Athenaを用いてクエリを実行します。
参考:公式ドキュメントAmazon QuickSight概要
Amazon QuickSightとは、Amazon AthenaやAmazon S3などと連携してデータ分析環境を作成することのできるBI(ビジネスインテリジェンス)サービスです。
手軽にわかりやすい形でデータを可視化することができ、さらにはレポートの生成・メール配信等も可能です。
今回はAWSを用いたデータ分析の一例として、Amazon Athenaのクエリ結果に対してこのAmazon QuickSightを用いたデータ分析を行います。
参考:公式ドキュメントAmazon AthenaとQuickSightでデータ分析を行うメリットは?
ここでは実際の操作に移る前に、Amazon AthenaとAmazon QuickSightでデータ分析基盤を作り、分析することのメリットについてご紹介します。
Amazon Athenaで分析する良さは何か?
サーバーレス | インフラ構築にコストをかけずにクエリを実行できます |
---|---|
標準SQL対応 | 学習コストがかかりません |
従量課金制 | 初期費用や維持費用が不要で、使った分だけ支払えばよいというスケーラビリティがあります |
Amazon QuickSightを使って嬉しいことは?
視覚的な分析 | さまざまな形式のグラフを用いてデータを視覚的に分析できます |
---|---|
AWSリソースとの連携 | 他のAWSリソースと簡単に連携し、クラウド上にデータ分析基盤を手軽に作成できます |
実際に使ってみた!
ここでは実際に使用している様子を、実際の画面キャプチャとともに紹介しています。
※画面キャプチャは執筆時点(2024年7月)のものです。AWSのコンソールのUIは頻繁に変更されますので、実際に使用される際はご注意ください。
Amazon S3のバケットを作成、分析対象のデータを設置
まずはAmazon S3を開き「バケットを作成」をクリック、必要情報を入力してバケットを作成します。バケットとは、Amazon S3上でファイルを管理する上での基本単位となるコンテナを意味します。


これでバケットを作成できましたね!

次は、作成したバケットに分析対象のファイルを設置します。
このバケットを選択してアップロードボタンを押すと、アップロードのための画面が表示されます。「ファイルを追加」からアップロードしたいファイルを選び、アップロードを行います。
※今回はサンプルとして政府統計ポータルサイトの「年齢(5歳階級),男女別人口-都道府県(大正9年~平成27年)」を使用しています。

また、この時にAmazon Athenaのクエリ実行結果を保存するためのバケットを別で作成しておくとデータの管理がしやすくなります。

Amazon AthenaでS3のデータにクエリ実行
次はAmazon Athenaから先ほどアップロードしたcsvファイルに対してクエリを実行します。Amazon Athenaを開いて、「クエリエディタを起動」してみます。

Amazon Athenaを初めて開いた状態ではクエリ結果を保存する場所が指定されていないので、クエリを実行できません。
「設定」タブを選択して「管理」画面を開き、クエリ結果の保存場所を先に指定してあげましょう。ここでは先ほど作ったクエリ結果保存用のAmazon S3バケットを選択します。

クエリ結果保存場所の設定ができれば、次はテーブルを作成します。「作成」ボタンを押し、「S3バケットデータ」を選択します。

作成画面が出てきました。
「入力データセットの場所」には先ほどcsvファイルを置いた場所を、今回分析するファイルはcsv形式のため「ファイル形式」はCSVを選択します。

「列の詳細」は分析するファイルの列の内容やデータ形式に応じて設定しましょう。今回は「列の一括追加」から「prefecture_code int, prefecture string, age string, japanese_calender string, japanese_calender_year int, anno_domini int, total_population int, male_population int, female_population int」と設定しています。
参考までに設定後の画面と元データの画面のキャプチャを掲載します。


これでテーブルが作成されました。「テーブルをプレビュー」をクリックします。

テーブルをプレビューすると、分析対象のcsvファイルの先頭10行を取得する以下のクエリが実行されます。
SELECT * FROM "default"."テーブル名" limit 10;

これでAmazon Athenaから正常にcsvファイルを取得できていることが確認できます。無事確認できたらクエリのタブの右端の「+」マークから新たなタブを生成し、必要に応じてさまざまなクエリを実行できます。
今回はcsvファイルの中からSELECTで「都道府県名、年齢5歳階級、西暦(年)、人口(総数)」のカラムを抽出、WHEREで「年齢5歳階級」が「総数」(つまり全体の人口)となっているレコードを取り出すクエリを実行します。

このようにクエリを実行することができました。

Amazon QuickSightで分析してみた
最後に、Amazon QuickSightでAmazon Athenaのクエリ結果を視覚的に分析してみましょう。
まずAmazon Athena上で、先ほど行ったクエリの冒頭に以下の文言をつけ足して新たなテーブルを作成します。このときクエリ結果の出力先として事前に新たなS3バケットを作成するか、もしくは新たなフォルダを作成しておきます。
CREATE TABLE IF NOT EXISTS 〓新たなテーブル名〓
WITH (external_location='s3://〓クエリ出力先にしたいS3バケット名〓/〓クエリ出力先にしたいフォルダのパス〓/') AS」
※この画像の例では新たなAmazon S3バケットを事前に作成しています。

次に「テーブルをプレビュー」して意図した通りの出力が得られるかを確認しましょう。

問題なければ、今度はAmazon QuickSightを立ち上げます。 アカウントを作成出来たら、まず「QuickSightを管理」から「セキュリティとアクセス許可」の項目を選び、今回必要なサービス(Amazon AthenaとAmazon S3のバケット)のアクセス許可を付与します。


次に、「新しい分析」から「新しいデータセット」を、「データセット」にはAmazon Athenaを選定の上、先ほどクエリを行ったデータベースとテーブルを選択します。

これでAmazon QuickSightから先ほどのクエリ結果を分析することが出来ます。
例1:西暦1920-2015年の人口の各都道府県の合計の棒グラフを用いた比較

このように、Amazon QuickSightでは手軽に他のサービスと連携して、データを視覚的に表示することができます。
また今回は実践しませんでしたが、レポートを生成したりメールで送信したりする機能も搭載されており、非常に利便性の高いBIツールであると言えます。 こうした手軽さや利便性より、ビジネスチャンス創出に有効なデータを抽出する用途や、社内の財務分析を視覚的に実施する用途など、さまざまな用途が想定できます。
まとめ
今回は、AWSを用いたデータ分析の実践として、Amazon AthenaやAmazon QuickSightを取り上げました。 最後にポイントをまとめると以下のようになります。
データの分析をする際、このようにAWSなどクラウドのリソースを有効活用してみるのはいかがでしょうか?
最後に宣伝となりますが、JIG-SAWからAWSをご契約いただくとAWSの利用料が割引でご利用いただけます。
利用料の割引だけでなく様々な無料特典もつき、システム構築や監視・運用、セキュリティサポートなど各種オプションサービスもご用意しておりますので、お気軽にご相談ください。

