pivot

개요

테이블을 여러 컬럼들을 축으로 회전 및 각종 통계 정보를 행과 열 별로 구할 수 있습니다.

설명

SPLITROW, SPLITCOL, ASBY의 문구를 지원하며, SPLITROW는 가로축 기반으로 그리고 SPLITCOL은 세로축 기반으로 데이터를 축 기준으로 회전 하거나 aggregation을 할 수 있습니다. AS는 결과 값의 field의 별칭을 줄 수 있습니다.

Examples

batting이라는 모델에서 YEARIDPLAYERID 를 각각 행렬로 그룹핑 하여 각 년도에 선수가 가장 많이 친 홈런의 갯수를 구하는 예제 입니다.

... | pivot max(HR) SPLITROW YEARID SPLITCOL PLAYERID

pivot 의 결과를 sort 하고자 할 때, 옵션 SORTROW , SORTCOL을 사용할 수 있습니다.

  • SORTROW,SORTCOL 의 인자로는 ascdesc를 사용 할 수 있습니다.
  • 예) SORTCOL asc or SORTCOL 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는 예약어이며 orderasc/desc의 값이 들어 갑니다. SPLITROW로 지정된 필드에 대한 Sort 결과를 나타내 줍니다.
예 : sortrow desc
옵션
SORTCOL order SORTCOL은 예약어이며 orderasc/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