pivot¶
개요¶
테이블을 여러 컬럼들을 축으로 회전 및 각종 통계 정보를 행과 열 별로 구할 수 있습니다.
설명¶
SPLITROW, SPLITCOL, AS 와 BY의 문구를 지원하며, SPLITROW는 가로축 기반으로 그리고 SPLITCOL은 세로축 기반으로 데이터를 축 기준으로 회전 하거나 aggregation을 할 수 있습니다. AS는 결과 값의 field의 별칭을 줄 수 있습니다.
Examples¶
batting이라는 모델에서 YEARID와 PLAYERID 를 각각 행렬로 그룹핑 하여 각 년도에 선수가 가장 많이 친 홈런의 갯수를 구하는 예제 입니다.
... | pivot max(HR) SPLITROW YEARID SPLITCOL PLAYERID
pivot 의 결과를 sort 하고자 할 때, 옵션 SORTROW , SORTCOL을 사용할 수 있습니다.
SORTROW,SORTCOL의 인자로는asc및desc를 사용 할 수 있습니다.- 예)
SORTCOL ascorSORTCOL desc
# SPLITCOL 인 DATE 컬럼에 대해 desc 로 정렬
... | pivot count(LEVEL_INT) SPLITCOL DATE SORTCOL desc
# SPLITROW 인 HOST 컬럼에 대해 asc 로 정렬
... | pivot count(LEVEL_INT) SPLITROW HOST SORTROW asc
# SPLITROW 인 HOST 와 SPLITCOL 인 DATE 컬럼에 대해 asc, desc 로 정렬
... | pivot count(LEVEL_INT) SPLITROW HOST SPLITCOL DATE SORTROW asc SORTCOL desc
Parameters¶
... | pivot FUNCTION (ASLIAS)? (, FUNCTION (ASLIAS)?)* (SPLITROW FIELD_NAME(, FIELD_NAME)*)? (SPLITCOL FIELD_NAME)? (FILTER filter_expr)? (COLSIZE N)? ((SORT order)? | (SORTROW order)? (SORTCOL order)?)
| 이름 | 설명 | 필수/옵션 |
|---|---|---|
| FUNCTION | FUNC(FIELD_NAME) 입니다. 지원하는 *FUNC의 종류는 아래 표를 참조해주세요. FIELD_NAME은 field 이름을 뜻합니다.예 : avg(fieldA), count(fieldB), … |
필수 |
| ASLIAS | AS FIELD_NAME 입니다. AS는 예약어 이며 FIELD_NAME은 field 이름을 뜻합니다.예 : avg(fieldA) as avg_fieldA |
옵션 |
| SPLITROW | SPLITROW는 예약어이며, 여기에 정의된 field를 그룹핑하여 출력합니다. 각 FIELD_NAME는 , 으로 구분 됩니다.예 : splitrow fieldA, fieldB |
옵션 |
| SPLITCOL | SPLITCOL은 예약어이며, 여기에 정의된 field를 그룹핑하여 가로축으로 피봇하여 출력합니다. 즉 field의 데이터가 컬럼명이 됩니다.예 : splitcol fieldA |
옵션 |
| FILTER filter_expr | FILTER는 예약어이며 filter_expr은 filter 조건을 뜻합니다.예 : filter fieldA=’valueA’ |
옵션 |
| COLSIZE N | COLSIZE는 예약어이며 N은 몇 개의 컬럼을 보여 줄 지에 대한 개수입니다.이 때, 컬럼의 개수에 해당하는 것은 SPLITCOL로 지정된 필드의 피벗 결과 컬럼의 개수입니다. SPLITROW의 필드와는 관계가 없습니다.예 : colsize 10 |
옵션 |
| SORT order | 삭제될 옵션 | 옵션 |
| SORTROW order | SORTROW는 예약어이며 order은 asc/desc의 값이 들어 갑니다. SPLITROW로 지정된 필드에 대한 Sort 결과를 나타내 줍니다.예 : sortrow desc |
옵션 |
| SORTCOL order | SORTCOL은 예약어이며 order은 asc/desc의 값이 들어 갑니다. SPLITCOL로 지정된 필드의 피벗 결과에 대한 Sort 결과를 나타내 줍니다.예 : sortcol desc |
옵션 |
order |
ASC, DESC는 일반적인 정렬을 의미합니다.요일 정렬: WEEK ASC, WEEK DESC달 정렬: MONTH ASC, MONTH DESC계절 정렬: SEASON ASC, SEASON DESC |
옵션 |
*FUNC의 종류
| 이름 | 설명 | 지원 타입 |
|---|---|---|
avg() |
평균 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
count() |
카운트를 구합니다. | 모든Type 가능 |
first() |
첫 번째 값을 구합니다. | 모든Type 가능 |
last() |
마지막 값을 구합니다. | 모든Type 가능 |
max() |
제일 큰 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
min() |
제일 작은 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
median() |
중간 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
sum() |
전체 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
stddev() |
표준편차 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
countDistinct() |
유니크한 값의 갯수를 구합니다. | 모든Type 가능 |
요일 정렬
아래 이름이나 별명에 대해 우선적으로 정렬합니다.
| 이름 | 별명 | 설명 |
|---|---|---|
| Monday | MON | 월요일 |
| Tuesday | TUE | 화요일 |
| Wednesday | WED | 수요일 |
| Thursday | THU | 목요일 |
| Friday | FRI | 금요일 |
| Saturday | SAT | 토요일 |
| Sunday | SUN | 일요일 |
달 정렬
아래 이름이나 별명에 대해 우선적으로 정렬합니다.
| 이름 | 별명 | 설명 |
|---|---|---|
| January | JAN | 1월 |
| February | FEB | 2월 |
| March | MAR | 3월 |
| April | APR | 4월 |
| May | 5월 | |
| June | 6월 | |
| July | 7월 | |
| August | AUG | 8월 |
| September | SEPT | 9월 |
| October | OCT | 10월 |
| November | NOV | 11월 |
| December | DEC | 12월 |
계절 정렬
아래 이름에 대해 우선적으로 정렬합니다.
| 이름 | 의미 |
|---|---|
| spring | 봄 |
| summer | 여름 |
| fall, autumn | 가을 |
| winter | 겨울 |
Parameters BNF¶
causes : funcs
| funcs SPLITROW fields
| funcs SPLITCOL fields
| funcs SPLITROW fields SPLITCOL fields
| funcs FILTER tokens
| funcs SPLITROW fields FILTER tokens
| funcs SPLITCOL fields FILTER tokens
| funcs SPLITROW fields SPLITCOL fields FILTER tokens
| funcs COLSIZE NUMBER
| funcs SPLITROW fields COLSIZE NUMBER
| funcs SPLITCOL fields COLSIZE NUMBER
| funcs SPLITROW fields SPLITCOL fields COLSIZE NUMBER
| funcs FILTER tokens COLSIZE NUMBER
| funcs SPLITROW fields FILTER tokens COLSIZE NUMBER
| funcs SPLITCOL fields FILTER tokens COLSIZE NUMBER
| funcs SPLITROW fields SPLITCOL fields FILTER tokens COLSIZE NUMBER
| funcs SORT order
| funcs SPLITROW fields SORT order
| funcs SPLITCOL fields SORT order
| funcs SPLITROW fields SPLITCOL fields SORT order
| funcs FILTER tokens SORT order
| funcs SPLITROW fields FILTER tokens SORT order
| funcs SPLITCOL fields FILTER tokens SORT order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens SORT order
| funcs COLSIZE NUMBER SORT order
| funcs SPLITROW fields COLSIZE NUMBER SORT order
| funcs SPLITCOL fields COLSIZE NUMBER SORT order
| funcs SPLITROW fields SPLITCOL fields COLSIZE NUMBER SORT order
| funcs FILTER tokens COLSIZE NUMBER SORT order
| funcs SPLITROW fields FILTER tokens COLSIZE NUMBER SORT order
| funcs SPLITCOL fields FILTER tokens COLSIZE NUMBER SORT order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens COLSIZE NUMBER SORT order
| funcs SPLITROW fields SORTROW order
| funcs SPLITROW fields SPLITCOL fields SORTROW order
| funcs SPLITROW fields FILTER tokens SORTROW order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens SORTROW order
| funcs SPLITROW fields COLSIZE NUMBER SORTROW order
| funcs SPLITROW fields SPLITCOL fields COLSIZE NUMBER SORTROW order
| funcs SPLITROW fields FILTER tokens COLSIZE NUMBER SORTROW order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens COLSIZE NUMBER SORTROW order
| funcs SPLITCOL fields SORTCOL order
| funcs SPLITROW fields SPLITCOL fields SORTCOL order
| funcs SPLITCOL fields FILTER tokens SORTCOL order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens SORTCOL order
| funcs SPLITCOL fields COLSIZE NUMBER SORTCOL order
| funcs SPLITROW fields SPLITCOL fields COLSIZE NUMBER SORTCOL order
| funcs SPLITCOL fields FILTER tokens COLSIZE NUMBER SORTCOL order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens COLSIZE NUMBER SORTCOL order
| funcs SPLITROW fields SPLITCOL fields SORTROW order SORTCOL order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens SORTROW order SORTCOL order
| funcs SPLITROW fields SPLITCOL fields COLSIZE NUMBER SORTROW order SORTCOL order
| funcs SPLITROW fields SPLITCOL fields FILTER tokens COLSIZE NUMBER SORTROW order SORTCOL order
fields : field
| fields COMMA field
field : TOKEN
| TOKEN AS TOKEN
funcs : funcs COMMA func
| func
func : TOKEN LPAREN TOKEN RPAREN
| TOKEN LPAREN TOKEN RPAREN AS TOKEN
tokens : TOKEN
| tokens TOKEN
| NUMBER
| tokens NUMBER
order : DESC
| ASC
TOKEN : ["..."|'...'|[^ |^,|^+|^-]+]
COMMA : ,
LPAREN : (
RPAREN : )
SPLITROW : (?i)SPLITROW
SPLITCOL : (?i)SPLITCOL
FILTER : (?i)FILTER
AS : (?i)AS
SORT : (?i)SORT
COLSIZE : (?i)COLSIZE
ASC : (?i)ASC
DESC : (?i)DESC
SORTROW : (?i)SORTROW
SORTCOL : (?i)SORTCOL