

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 샘플 데이터베이스
<a name="c_sampledb"></a>

이 섹션에서는 Amazon Redshift 설명서 예제에서 사용하는 샘플 데이터베이스인 TICKIT에 대해 설명합니다.

이 작은 크기의 데이터베이스는 팩트 테이블 2개와 차원 테이블 5개, 총 7개의 테이블로 구성되어 있습니다. Amazon Redshift 시작 안내서의 [4단계: Amazon S3에서 Amazon Redshift로 데이터 로드](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-create-sample-db.html) 단계에 따라 TICKIT 데이터 세트를 로드할 수 있습니다.

![TICKIT 샘플 데이터베이스의 7개 테이블과 테이블 간의 관계입니다.](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/images/tickitdb.png)


이 샘플 데이터베이스를 적용하면 사용자가 스포츠 이벤트, 공연 및 콘서트 등을 위한 온라인 티켓을 사고 팔 수 있는 가상의 TICKIT 웹사이트에서 분석가가 판매 작업을 추적하는 데 효과적입니다. 특히 시간 경과에 따른 티켓 이동과 판매자의 성공률, 그리고 티켓이 가장 많이 팔리는 이벤트, 공연장 및 계절 등을 구분할 수 있습니다. 분석가는 이러한 정보를 사용하여 사이트를 자주 방문하는 구매자와 판매자 모두에게 신규 사용자를 유치하거나 광고 및 홍보 효과를 높이는 동기를 제공할 수 있습니다.

예를 들어 다음은 2008년에 판매된 티켓 수를 기준으로 San Diego의 상위 판매자 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 값을 나타내는 기본 키입니다. 각 행마다 연중 날짜를 나타냅니다. | 
| CALDATE  | 날짜  | 날짜(2008-06-24 등)입니다. | 
| DAY  | CHAR)  | 짧은 형식의 주중 요일(SA 등)입니다. | 
| 주  | SMALLINT  | 주의 수(26 등)입니다. | 
| MONTH  | CHAR)  | 짧은 형식의 월 이름(JUN 등)입니다. | 
| QTR  | CHAR)  | 분기 수(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자로 축약된 주 또는 지방(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)  | 사용자가 태어난 주(GA 등)입니다. | 
| EMAIL  | VARCHAR(100)  | 사용자의 이메일 주소입니다. 이 열에는 임의의 Latin 값(turpis@accumsanlaoreet.org 등)이 포함됩니다. | 
| PHONE  | CHAR)  | 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)  | 티켓 1장당 정가(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 등)입니다. 티켓 1장당 가격은 PRICEPAID/QTYSOLD입니다. | 
| COMMISSION  | DECIMAL(8,2)  | 사업체에서 티켓 판매 시 징수하는 15% 수수료(11.25, 73.20 등)입니다. 판매자는 PRICEPAID 값의 85%를 받습니다. | 
| SALETIME  | TIMESTAMP  | 판매가 완료된 연도 및 날짜와 시간(2008-05-24 06:21:47 등)입니다. | 

------