

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 示例数据库
<a name="c_sampledb"></a>

本节介绍 TICKIT，这是 Amazon Redshift 文档示例使用的示例数据库。

这个小型数据库包含七个表：两个事实表和五个维度。您可以按照《Amazon Redshift 入门指南》中的[步骤 4：从 Amazon S3 将数据加载到 Amazon Redshift](https://docs.amazonaws.cn/redshift/latest/gsg/rs-gsg-create-sample-db.html) 中的步骤加载 TICKIT 数据集。

![TICKIT 示例数据库中的七个表及其相互关系。](http://docs.amazonaws.cn/redshift/latest/dg/images/tickitdb.png)


此示例数据库应用程序帮助分析人员跟踪虚构的 TICKIT 网站的销售活动，用户可以在该网站上在线购买和销售体育赛事、演出和音乐会的门票。具体而言，分析人员可以识别一段时间内门票的变化、卖方的成功率以及最畅销的活动、场馆和季节。分析人员可以使用这些信息向经常访问该站点的买方和卖方提供奖励，吸引新用户，以及推动广告和促销活动。

例如，下面的查询根据 2008 年销售的门票数，查找圣地亚哥排名前五的卖方：

```
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)
```

用于本指南中示例的数据库包含一个小的数据集，其中包含两个事实表，每个表包含的行数不超过 200000，维度范围从 CATEGORY 表中的 11 行到 USERS 表中的大约 50000 行。

具体而言，本指南中的数据库示例演示 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 值。每行表示日历年中的一天。 | 
| CALDATE  | DATE  | 日历日期，例如 2008-06-24。 | 
| DAY  | CHAR(3)  | 星期几（短格式），例如 SA。 | 
| WEEK  | SMALLINT  | 第几周，例如 26。 | 
| MONTH  | CHAR(5)  | 月名称（短格式），例如 JUN。 | 
| QTR  | CHAR(5)  | 第几季度（1 到 4）。 | 
| YEAR  | SMALLINT  | 四位年份 (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)  | 两个字母组成的州或省缩写（美国和加拿大），例如 OH。 | 
| VENUESEATS  | INTEGER  | 场馆内提供的最大座位数（如果已知），例如 73200。出于演示目的，此列包含一些 Null 值和零。 | 

------
#### [ USERS table ]


| 列名称  | 数据类型  | 描述  | 
| --- | --- | --- | 
| USERID  | INTEGER  | 主键，每行的唯一 ID 值。每行表示一个已列出或购买至少一项活动的门票的已注册用户（买方和/或卖方）。 | 
| USERNAME  | CHAR(8)  | 8 个字符组成的字母数字用户名，例如 PGL08LJI。 | 
| FIRSTNAME  | VARCHAR(30)  | 用户的名字，例如 Victor。 | 
| LASTNAME  | VARCHAR(30)  | 用户的姓氏，例如 Hernandez。 | 
| CITY  | VARCHAR(30)  | 用户的家所在的城市，例如 Naperville。 | 
| STATE  | CHAR(2)  | 用户的家所在的州/省，例如 GA。 | 
| EMAIL  | VARCHAR(100)  | 用户的电子邮件地址；此列包含随机拉丁值，例如 turpis@accumsanlaoreet.org。 | 
| PHONE  | CHAR(14)  | 14 个字符组成的用户电话号码，例如 (818) 765-4255。 | 
| LIKESPORTS, ... | BOOLEAN  | 一系列的 10 个不同列，这些列以 true 和 false 值标识用户的好恶。 | 

------
#### [ 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 值。每行表示一个特定活动的一张或多张门票的销售，如特定列表中所提供的。 | 
| LISTID  | INTEGER  | 对 LISTING 表的外键引用。 | 
| SELLERID  | INTEGER  | 对 USERS 表的外键引用（销售门票的用户）。 | 
| BUYERID  | INTEGER  | 对 USERS 表的外键引用（购买门票的用户）。 | 
| EVENTID  | INTEGER  | 对 EVENT 表的外键引用。 | 
| DATEID  | SMALLINT  | 对 DATE 表的外键引用。 | 
| QTYSOLD  | SMALLINT  | 已销售的门票数（从 1 到 8）。（单次交易最多可销售 8 张门票。）  | 
| PRICEPAID  | DECIMAL(8,2)  | 支付的总票价，例如 75.00 或 488.00。单张票价是 PRICEPAID/QTYSOLD。 | 
| COMMISSION  | DECIMAL(8,2)  | 企业从销售额中抽取的 15% 佣金，例如 11.25 或 73.20。卖方得到 85% 的 PRICEPAID 值。 | 
| SALETIME  | TIMESTAMP  | 销售完成的完整日期和时间，例如 2008-05-24 06:21:47。 | 

------