示例数据库
本节介绍 TICKIT,这是 Amazon Redshift 文档示例使用的示例数据库。
这个小型数据库包含七个表:两个事实表和五个维度。您可以按照《Amazon Redshift 入门指南》中的步骤 4:从 Amazon S3 将数据加载到 Amazon Redshift 中的步骤加载 TICKIT 数据集。
此示例数据库应用程序帮助分析人员跟踪虚构的 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
。
将 Amazon Redshift 与其他服务一起使用
最佳实践