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