pivot
개요
테이블을 여러 컬럼들을 축으로 회전 및 각종 통계 정보를 행과 열 별로 구할 수 있습니다.
타입
TEXT, INTEGER, BIGINT, REAL, DATE, TIMESTAMP
설명
SPLITROW
, SPLITCOL
, AS
의 문구를 지원하며, SPLITROW
는 가로축 기반으로 그리고 SPLITCOL
은 세로축 기반으로 데이터를 축 기준으로 회전 하거나 aggregation을 할 수 있습니다. AS
는 결과 값의 field의 별칭을 줄 수 있습니다.
pivot 의 결과를 sort 하고자 할 때, 옵션 SORTROW
, SORTCOL
을 사용할 수 있습니다.
SORTROW
,SORTCOL
의 인자로는asc
및desc
를 사용 할 수 있습니다.예)
SORTCOL asc
orSORTCOL 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 |
|
필수 |
ASLIAS |
|
옵션 |
SPLITROW |
|
옵션 |
SPLITCOL |
|
옵션 |
FILTER filter_expr |
|
옵션 |
COLSIZE N |
|
옵션 |
SORT order |
삭제될 옵션 |
옵션 |
SORTROW order |
|
옵션 |
SORTCOL order |
|
옵션 |
|
|
옵션 |
FUNC
의 종류
이름 |
설명 |
지원 타입 |
---|---|---|
|
평균 값을 구합니다. |
|
|
카운트를 구합니다. |
모든Type 가능 |
|
첫 번째 값을 구합니다. |
모든Type 가능 |
|
마지막 값을 구합니다. |
모든Type 가능 |
|
제일 큰 값을 구합니다. |
|
|
제일 작은 값을 구합니다. |
|
|
중간 값을 구합니다. |
|
|
전체 값을 구합니다. |
|
|
표준편차 값을 구합니다. |
|
|
표준편차 값을 구합니다. |
|
|
모표준편차 값을 구합니다. |
|
|
표본분산 값을 구합니다. |
|
|
표본분산 값을 구합니다. |
|
|
모분산 값을 구합니다. |
|
|
유니크한 값의 갯수를 구합니다. |
모든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 |
겨울 |
Examples
예제 데이터
sepal_length |
sepal_width |
speceis |
---|---|---|
5.1 |
3.5 |
Iris-setosa |
4.9 |
3.0 |
Iris-setosa |
4.7 |
3.2 |
Iris-setosa |
3.7 |
4.7 |
Iris-setosa |
5.8 |
8.2 |
Iris-setosa |
7.3 |
2.6 |
Iris-setosa |
7.4 |
5.4 |
Iris-setosa |
6.5 |
7.8 |
setosa |
6.2 |
4.7 |
setosa |
5.9 |
12.5 |
setosa |
4.3 |
5.2 |
setosa |
5.7 |
7.3 |
setosa |
5.2 |
3.8 |
setosa |
2.5 |
7.1 |
setosa |
- count, avg, stddev, min, max, median, sum 통계 & SPLITROW Species
Species
는 3개 종이므로 SPLITROW Species 는 3개의 행으로 split 되어 결과가 나옵니다.Species
이름으로 그룹핑 된 결과 에서 갯수,sepal_width
필드의 평균, 표준편차, 최소값, 최대값, 중간값, 합계를 구합니다.
- SORTROW
SPLITROW Species SORTROW desc
는 Species 가 행으로 split 된 결과를 내림차순으로 표시합니다.
* | pivot count(*) as 개수,
avg(sepal_width) as 평균_sepal_width,
stddev(sepal_width) as 표준편차_sepal_width,
min(sepal_width) as 최소값_sepal_width,
max(sepal_width) as 최대값_sepal_width,
median(sepal_width) as 중간값_epal_width,
sum(sepal_width) as 합계_sepal_width
SPLITROW Species SORTROW desc
species |
개수 |
평균_sepal_width |
표본표준편차_sepal_width |
모표준편차_sepal_width |
최소값_sepal_width |
최대값_sepal_width |
중간값_epal_width |
합계_sepal_width |
분산_sepal_width |
---|---|---|---|---|---|---|---|---|---|
Iris-setosa |
7 |
4.371428571428572 |
1.9567952419830796 |
1.8116403661672287 |
2.6 |
8.2 |
3.5 |
30.6 |
3.829047619047619 |
setosa |
7 |
6.914285714285714 |
2.8783262332060113 |
2.6648122804047416 |
3.8 |
12.5 |
7.1 |
48.4 |
8.284761904761906 |
- count, avg 통계 & SPLICOL Species & SORTCOL
SPLITCOL Species 는
Species결과_함수명(alias)
가 컬럼으로 생성되어 보여집니다.
* | pivot count(*) as 개수, avg(sepal_width) as 평균_sepal_width SPLITCOL Species SORTCOL desc
Iris-setosa_평균_sepal_width |
Iris-setosa_개수 |
setosa_평균_sepal_width |
setosa_개수 |
---|---|---|---|
6.914285714285714 |
7 |
4.371428571428572 |
7 |
countDistinct
* | pivot countDistinct(Species)
countDistinct |
---|
2 |
예제 데이터 2
DATETIME |
HOST |
---|---|
“2020-07-03 12:14:00” |
gcs1 |
“2020-07-03 12:24:00” |
gcs1 |
“2020-07-05 12:34:00” |
gcs1 |
“2020-07-03 11:34:00” |
gcs1 |
“2020-07-04 04:34:00” |
gcs1 |
“2020-07-03 04:34:00” |
gcs2 |
“2020-07-04 02:34:00” |
gcs2 |
“2020-07-03 01:34:00” |
gcs2 |
“2020-07-04 05:34:00” |
gcs2 |
“2020-07-05 03:34:00” |
gcs2 |
“2020-07-04 12:13:00” |
gcs2 |
“2020-07-03 12:14:00” |
gcs2 |
HOST 별로 10시간 단위로 로그 COUNT 를 구합니다.
SPLITROW 필드,필드 SORTROW asc/desc
* | pivot count(*) as CNT SPLITROW date_group(DATETIME, 10H) as TIME, HOST SORTROW asc
TIME |
HOST |
CNT |
---|---|---|
2020-07-03 00:00:00 |
gcs2 |
2 |
2020-07-03 10:00:00 |
gcs1 |
3 |
2020-07-03 10:00:00 |
gcs2 |
1 |
2020-07-04 00:00:00 |
gcs1 |
1 |
2020-07-04 00:00:00 |
gcs2 |
2 |
2020-07-04 10:00:00 |
gcs2 |
1 |
2020-07-05 00:00:00 |
gcs2 |
1 |
2020-07-05 10:00:00 |
gcs1 |
1 |