Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事を参照してください。
サンプルデータベース
このセクションでは、Amazon Redshift ドキュメントの例で使用されている、TICKIT というサンプルデータベースについて説明します。
この小規模のデータベースは、7 個のテーブルで構成されています。そのうち 2 個はファクトテーブル、5 個はディメンションです。「Amazon Redshift 入門ガイド」の「ステップ 4: Amazon S3 から Amazon Redshift にデータをロードする」の手順に従って、TICKIT データセットをロードできます。
このサンプルデータベースアプリケーションでは、アナリストが、架空の TICKIT ウェブサイトの販売アクティビティを追跡できます。ユーザーはこのサイトで、スポーツイベント、ショー、およびコンサートのチケットをオンラインで購入および販売します。アナリストは特に、長期間にわたってチケットの動向を確認でき、販売者の成功率に加えて、人気の高いイベント、施設、シーズンを確認できます。アナリストは、この情報を使用して、頻繁にサイトにアクセスする購入者および販売者にインセンティブを提供したり、新規ユーザーを誘致したり、広告やプロモーションを推進したりすることができます。
例えば、次のクエリは、2008 年に販売されたチケット数に基づき、サンディエゴで最も販売数の多かった販売者 5 名を検出します。
select sellerid, username, (firstname ||' '|| lastname) as name,
city, sum(qtysold)
from sales, date, users
where sales.sellerid = users.userid
and sales.dateid = date.dateid
and year = 2008
and city = 'San Diego'
group by sellerid, username, name, city
order by 5 desc
limit 5;
sellerid | username | name | city | sum
----------+----------+-------------------+-----------+-----
49977 | JJK84WTE | Julie Hanson | San Diego | 22
19750 | AAS23BDR | Charity Zimmerman | San Diego | 21
29069 | SVL81MEQ | Axel Grant | San Diego | 17
43632 | VAG08HKW | Griffin Dodson | San Diego | 16
36712 | RXT40MKU | Hiram Turner | San Diego | 14
(5 rows)
このガイドで例示しているデータベースには、小規模のデータセットが含まれています。このデータセットでは、2 つのファクトテーブルそれぞれに含まれる行が 200,000 行未満で、ディメンションの範囲は CATEGORY テーブルの 11 行から USERS テーブルの 50,000 行までです。
特に、このガイドに記載するデータベースの例では、Amazon Redshift テーブル設計における以下の主要機能をデモンストレーションしています。
-
データのディストリビューション
-
データのソート
-
列指向の圧縮
TICKIT データベース内のテーブルのスキーマについては、以下のタブを選択してください。
- CATEGORY table
-
| 列名 |
データ型 |
説明 |
| CATID |
SMALLINT |
プライマリキー。各行の一意の ID 値。各行は、チケットが購入および販売される特定のタイプのイベントを表します。 |
| CATGROUP |
VARCHAR(10) |
イベントのグループの記述名 (例: Shows および Sports)。 |
| CATNAME |
VARCHAR(10) |
グループ内のイベントのタイプの短い記述名 (例: Opera および Musicals)。 |
| CATDESC |
VARCHAR(50) |
イベントのタイプの長い記述名 (例: Musical theatre)。 |
- DATE table
-
| 列名 |
データ型 |
説明 |
| DATEID |
SMALLINT |
プライマリキー。各行の一意の ID 値。各行は、1 暦年の中の各日を表します。 |
| CALDATE |
DATE |
カレンダー日付 (例: 2008-06-24)。 |
| DAY |
CHAR(3) |
曜日 (短縮形) (例: SA)。 |
| WEEK |
SMALLINT |
週番号 (例: 26)。 |
| MONTH |
CHAR(5) |
月名 (短縮形) (例: JUN)。 |
| QTR |
CHAR(5) |
四半期番号 (1~4)。 |
| YEAR |
SMALLINT |
4 桁の年 (2008)。 |
| HOLIDAY |
BOOLEAN |
その日が祝日 (米国) であるかどうかを示すフラグ。 |
- EVENT table
-
| 列名 |
データ型 |
説明 |
| EVENTID |
INTEGER |
プライマリキー。各行の一意の ID 値。各行は、特定の時刻に特定の施設で開催された各イベントを表します。 |
| VENUEID |
SMALLINT |
VENUE テーブルの外部キー参照。 |
| CATID |
SMALLINT |
CATEGORY テーブルの外部キー参照。 |
| DATEID |
SMALLINT |
DATE テーブルの外部キー参照。 |
| EVENTNAME |
VARCHAR(200) |
イベントの名前 (例: Hamlet または La Traviata)。 |
| STARTTIME |
TIMESTAMP |
イベントの日付と開始時刻 (例: 2008-10-10 19:30:00)。 |
- VENUE table
-
| 列名 |
データ型 |
説明 |
| VENUEID |
SMALLINT |
プライマリキー。各行の一意の ID 値。各行は、イベントが開催された特定の施設を表します。 |
| VENUENAME |
VARCHAR(100) |
施設の正式名称 (例: Cleveland Browns Stadium)。 |
| VENUECITY |
VARCHAR(30) |
市町村名 (例: Cleveland)。 |
| VENUESTATE |
CHAR(2) |
州または地域の 2 文字の略称 (米国およびカナダ) (例: OH)。 |
| VENUESEATS |
INTEGER |
施設で利用できる座席の最大数 (ただし、確認済みの場合) (例: 73200)。デモンストレーションの目的から、この列には null 値と 0 がいくつか含まれています。 |
- USERS table
-
| 列名 |
データ型 |
説明 |
| USERID |
INTEGER |
プライマリキー。各行の一意の ID 値。各行は、1 つ以上のイベントでチケットをリストまたは購入した登録済みのユーザー (購入者、販売者、または両方) を表します。 |
| USERNAME |
CHAR(8) |
英数字 8 文字のユーザー名 (例: PGL08LJI)。 |
| FIRSTNAME |
VARCHAR(30) |
ユーザーの名 (例: Victor)。 |
| LASTNAME |
VARCHAR(30) |
ユーザーの姓 (例: Hernandez)。 |
| CITY |
VARCHAR(30) |
ユーザーの自宅住所の市町村 (例: Naperville)。 |
| STATE |
CHAR(2) |
ユーザーの自宅住所の州 (例: GA)。 |
| EMAIL |
VARCHAR(100) |
ユーザーの E メールアドレス (この列にはランダムなラテン文字値が格納される) (例: turpis@accumsanlaoreet.org)。 |
| PHONE |
CHAR(14) |
ユーザーの 14 文字の電話番号 (例: (818) 765-4255)。 |
| LIKESPORTS, ..。 |
BOOLEAN |
ユーザーの好き嫌いを true 値および false 値で表す一連の 10 列。 |
- LISTING table
-
| 列名 |
データ型 |
説明 |
| LISTID |
INTEGER |
プライマリキー。各行の一意の ID 値。各行は、特定のイベントの一連のチケットをリストで表します。 |
| SELLERID |
INTEGER |
USERS テーブルの外部キー参照 (チケットを販売するユーザーを表す)。 |
| EVENTID |
INTEGER |
EVENT テーブルの外部キー参照。 |
| DATEID |
SMALLINT |
DATE テーブルの外部キー参照。 |
| NUMTICKETS |
SMALLINT |
販売可能なチケット数 (例: 2 または 20)。 |
| PRICEPERTICKET |
DECIMAL(8,2) |
各チケットの定価 (例: 27.00 または 206.00)。 |
| TOTALPRICE |
DECIMAL(8,2) |
このリストの定価総額 (NUMTICKETS*PRICEPERTICKET)。 |
| LISTTIME |
TIMESTAMP |
リストが投稿された日時 (例: 2008-03-18 07:19:35)。 |
- SALES table
-
| 列名 |
データ型 |
説明 |
| SALESID |
INTEGER |
プライマリキー。各行の一意の ID 値。各行は、特定のイベントの 1 枚以上のチケットの各販売を表します (特定のリストで提供)。 |
| LISTID |
INTEGER |
LISTING テーブルの外部キー参照。 |
| SELLERID |
INTEGER |
USERS テーブルの外部キー参照 (チケットを販売したユーザー)。 |
| BUYERID |
INTEGER |
USERS テーブルの外部キー参照 (チケットを購入したユーザー)。 |
| EVENTID |
INTEGER |
EVENT テーブルの外部キー参照。 |
| DATEID |
SMALLINT |
DATE テーブルの外部キー参照。 |
| QTYSOLD |
SMALLINT |
販売されたチケット数 (1~8)。(1 回の取引で最大 8 枚のチケットを販売できます。) |
| PRICEPAID |
DECIMAL(8,2) |
チケットの合計支払額 (例: 75.00 または 488.00)。チケットの個別の価格は PRICEPAID/QTYSOLD です。 |
| COMMISSION |
DECIMAL(8,2) |
そのビジネスで販売価格から徴収される 15% のコミッション (例: 11.25 または 73.20)。販売者は PRICEPAID 値の 85% を受け取ります。 |
| SALETIME |
TIMESTAMP |
販売が完了した日時 (例: 2008-05-24 06:21:47)。 |