2025-05-15
【AWSで始める機械学習】
AWS Athena:S3上のデータをSQLで手軽に分析
ビッグデータ分析のニーズが高まる中、大量のデータを効率的に分析するためのツールが求められています。AWS (Amazon Web Services) が提供する Amazon Athena は、標準的なSQLを使用して、Amazon S3に保存されたデータを直接分析できる、サーバーレスでインタラクティブなクエリサービスです。
インフラの管理は不要、必要な時に必要な分だけ利用できる手軽さが魅力のAthena。本記事では、Athenaの基本的な概念から、具体的な活用シーン、そしてすぐに始められる方法までを詳しく解説します。データ分析の新たな扉を開きましょう!
従来のデータ分析基盤の構築には、データベースのセットアップ、データのロード、インデックスの作成など、多くの手間とコストがかかりました。Amazon Athenaは、これらの課題を解決し、以下のようなメリットを提供します。
サーバーレス
インフラの管理が一切不要です。AWSが自動的にスケーリングし、クエリの実行に必要なリソースを管理します。
SQLによる簡単な分析
標準的なSQLの知識があれば、すぐにデータの分析を開始できます。特別なプログラミングスキルは必要ありません。
S3上のデータを直接クエリ
Amazon S3に保存された様々な形式のデータ(CSV、JSON、Parquet、ORCなど)を直接クエリできます。データの移動やロードの手間が省けます。
従量課金制
クエリの実行によってスキャンされたデータ量に応じて課金されるため、コスト効率に優れています。
高速なクエリ性能
大量のデータに対しても高速なクエリ実行を実現するための最適化が施されています。
AWS Glueとの連携
AWS Glue Data Catalogと連携することで、データソースのスキーマ情報を簡単に管理できます。
他のAWSサービスとの連携
Amazon QuickSightと連携して、分析結果を可視化したり、他のAWSサービスと組み合わせてより高度なデータ処理パイプラインを構築したりできます。
Athenaを理解するために、いくつかの重要な概念を押さえておきましょう。
データソース
分析対象となるデータが保存されている場所(主にAmazon S3バケット)。
テーブル
Athena上で定義する論理的な構造。S3上のデータとスキーマを結びつけます。
スキーマ
テーブル内のデータの構造(列名、データ型など)。AWS Glue Data Catalogなどで定義できます。
クエリ
データを分析するために実行するSQL文。
ワークグループ
クエリの実行環境や設定を管理するための論理的なグループ。コスト管理やアクセス制御に利用できます。
Amazon Athenaは、その手軽さと柔軟性から、様々なシーンで活用されています。
ログ分析
Webサーバーのアクセスログ、アプリケーションログ、AWSサービスが出力するログなどを分析し、傾向や問題を把握します。
クリックストリーム分析
Webサイトやアプリケーションのユーザーの行動履歴を分析し、ユーザー体験の改善やマーケティング戦略の立案に役立てます。
IoTデータの分析
IoTデバイスから収集された大量のセンサーデータを分析し、異常検知や予測分析に活用します。
ビジネスインテリジェンス (BI)
Amazon QuickSightなどのBIツールと連携し、データに基づいた意思決定を支援するためのダッシュボードやレポートを作成します。
データ探索とプロトタイピング
大量のデータに対して迅速にSQLクエリを実行し、データの特性を把握したり、分析のアイデアを検証したりするのに適しています。
機械学習の前処理
機械学習モデルの学習に必要なデータを抽出、加工するために、AthenaでSQLクエリを実行することがあります。
アドホックなデータ分析
定期的なレポート作成だけでなく、必要に応じてその場ですぐにデータ分析を行いたい場合に便利です。
Amazon Athenaを始めるための基本的なステップを見ていきましょう。
データの準備
分析したいデータをAmazon S3バケットに保存します。※事前にS3バケットの作成も必要です。
AWS Glue Data Catalogの設定 (推奨)
AWS Glue Data Catalogでデータソースのスキーマを定義します。これにより、Athenaでテーブルを作成する際にスキーマを手動で定義する手間が省けます。
Athenaコンソールへのアクセス
AWSマネジメントコンソールからAthenaのサービス画面を開きます。
ワークグループの選択または作成
必要に応じてワークグループを選択または新規作成します。
テーブルの作成
Data Catalogにスキーマが登録されていれば、それに基づいてテーブルを作成します。手動でスキーマを定義することも可能です。
SQLクエリの実行
AthenaのエディタでSQLクエリを作成し、実行します。
クエリ結果の確認
クエリの実行結果がコンソールに表示されます。結果をCSV形式などでダウンロードすることも可能です。
Athenaを効率的かつコスト効率的に利用するためのいくつかのベストプラクティスと注意点をご紹介します。
データ形式の最適化
ParquetやORCなどのカラムナ形式でデータを保存すると、クエリのパフォーマンスが向上し、スキャンされるデータ量を削減できます。
パーティショニングの活用
クエリで頻繁にフィルタリングする列でデータをパーティショニングすると、スキャンするデータ量を大幅に削減できます。
SELECT句での必要な列のみを指定
不要な列までSELECTすると、スキャンされるデータ量が増加し、コストがかかります。
LIMIT句の活用
大量のデータに対して探索的なクエリを実行する際は、LIMIT句で結果件数を制限することを推奨します。
プレフィックスによるスキャン範囲の限定
クエリで分析対象のS3プレフィックスを限定することで、スキャンするデータ量を減らせます。
logs/2025/05/15/access_log_0800.log
logs/2025/05/15/access_log_0900.log
logs/2025/05/14/access_log_1000.log
logs/2025/05/15/access_log_0800.log の logs/2025/や logs/2025/05/がプレフィックスとなります。
SELECT * FROM your_table WHERE "$path" LIKE 's3://your-bucket-name/logs/2025/05/15/%';
AthenaでS3上のデータをクエリする際に、このプレフィックスを活用することで、スキャンするデータの範囲を限定できます。例えば、特定の日付のログのみを分析したい場合、WHERE句でプレフィックスを指定することで、関係のない過去のログファイルを読み込む必要がなくなり、クエリのパフォーマンス向上とコスト削減につながります。
AWS Glue Data Catalogの活用
スキーマ管理を一元化し、Athenaでのテーブル定義を簡素化します。
コスト管理
ワークグループを設定し、クエリコストのアラートを設定するなど、コスト管理を意識しましょう。
Amazon Athenaは、S3上のデータをSQLで手軽に分析できる強力なツールです。サーバーレスでインフラ管理が不要なため、データ分析に集中できます。様々な活用シーンでその力を発揮し、データドリブンな意思決定を加速してくれるでしょう。
Recommend Books