pivot
개요
테이블을 여러 컬럼들을 축으로 회전 및 각종 통계 정보를 행과 열 별로 구할 수 있습니다.
타입
TEXT, INTEGER, BIGINT, REAL, DATE, TIMESTAMP
설명
SPLITROW, SPLITCOL, AS 의 문구를 지원하며, SPLITROW는 가로축 기반으로 그리고 SPLITCOL은 세로축 기반으로 데이터를 축 기준으로 회전 하거나 aggregation을 할 수 있습니다. AS는 결과 값의 field의 별칭을 줄 수 있습니다.
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 |
|
필수 |
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 |