概要
なぜデータベース、テーブル作成を実行するか?
S3のファイルはただの「データの塊」であり、Athenaがそれを理解するには「設計図」が必要となるから
具体例
S3に以下のCSVファイルがあるとする:
1,田中,2024-01-01
2,佐藤,2024-01-02
3,鈴木,2024-01-03
Athenaの視点:
- これは何のデータ?
- 1列目は何?数字?文字?
- 2列目は名前?住所?
- どこで列が区切られている?
テーブル定義の役割:
CREATE EXTERNAL TABLE users (
id int, -- 1列目は整数のID
name string, -- 2列目は文字列の名前
date string -- 3列目は文字列の日付
)
STORED AS TEXTFILE -- CSV形式
LOCATION 's3://my-bucket/data/' -- ここにあるこれで初めて:
SELECT name FROM users WHERE id = 1;
-- 「usersテーブルのnameカラムを取得、idが1の行」データベースの役割
複数のテーブルを整理するフォルダのようなもの:
my_database/
├── users テーブル
├── orders テーブル
└── products テーブル
用語
各コンポーネント
ワークグループ (Workgroup)
• 役割: クエリ実行環境の設定・管理 • 機能: • 結果保存先S3バケット指定 • データスキャン上限設定 • 課金管理・タグ付け • 例: primary(デフォルト)、dev-team、prod-analytics
データソース (Data Source)
• 役割: データの接続先種別 • デフォルト: AwsDataCatalog(AWS Glue Data Catalog) • その他: Lambda connector経由で外部DB接続可能 • 実体: メタデータストア(テーブル定義の保存場所)
データベース (Database)
• 役割: テーブルの論理的なグループ化 • 機能: 名前空間の提供、権限管理の単位 • 作成: CREATE DATABASE sales_analytics; • 例: web_logs、sales_data、user_analytics
テーブル (Table)
• 役割: S3データファイルとスキーマの紐付け • 種類: 外部テーブル(EXTERNAL TABLE) • 必須要素: • 列定義(名前・型) • データ形式(CSV、JSON、Parquet等) • S3ロケーション