case
개요
조건 처리가 가능한 명령어
타입
TEXT, INTEGER, BIGINT, REAL, DATE, TIMESTAMP
설명
“* | case when 조건절(and/or)* then 컬럼명/값 (when ….)* otherwise 컬럼명/값 as 컬럼명”
> 조건절에는 and/or 를 포함할 수 있다.
when, then, otherwise, as, and, or 각각의 키워드는 대소문자의 구분이 없다.
컬럼명에는 원하는 컬럼명을 ` ` 혹은 따옴표 없이 넣을 수 있다.
> 띄어쓰기가 포함된 컬럼명은 ` ` 를 통해 넣을 수 있다.
값에는 원하는 문자열을 ‘ ‘ 를 통해 넣을 수 있다.
값에는 원하는 숫자를 따옴표 없이 넣을 수 있다.
as 뒤의 컬럼명에는 ` ` 혹은 따옴표 없이 컬럼명을 설정할 수 있다.
> 띄어쓰기가 포함된 컬럼명은 ` ` 를 통해 넣을 수 있다.
when-then, and/or 는 중복해서 사용 가능하다.
then , otherwise 에 null값을 null 또는 ‘null’ 을 이용하여 대입할 수 있다.
> ‘null’을 이용하면 문자열로 대입된다.
Parameters
조건 = (COLUMN / `COLUMN` / NUMBER / 'STRING'/ and / or)
값 = (COLUMN / `COLUMN` / NUMBER / 'STRING')
... | case when 조건 then 값
... | case when 조건 then 값 otherwise 값
... | case when 조건 then 값 otherwise 값 as 값
이름 |
설명 |
필수/옵션 |
---|---|---|
조건 |
조건을 입력하는 부분입니다. and / or를 포함합니다 |
필수 |
값 |
값을 입력하는 부분입니다. and / or를 포함하지 않습니다 |
필수 |
COLUMN / `COLUMN` |
원하는 컬럼을 조건 혹은 값에 설정할 수 있습니다. |
필수 |
NUMBER |
원하는 숫자를 조건 혹은 값에 설정할 수 있습니다. |
필수 |
‘STRING’ |
원하는 문자열을 조건 혹은 값에 설정할 수 있습니다. |
필수 |
when |
Spark SQL의 WHEN에 해당합니다. |
필수 |
then |
Spark SQL의 THEN에 해당합니다. |
필수 |
otherwise |
Spark SQL의 OTHERWISE에 해당합니다. |
옵션 |
as |
Spark SQL의 AS에 해당합니다. |
옵션 |
and |
Spark SQL의 AND에 해당합니다. |
옵션 |
or |
Spark SQL의 OR에 해당합니다. |
옵션 |
기본적으로 SQL의 문법을 준수합니다.
Example
예제용 데이터 모양 입니다.
A |
B |
C |
D |
---|---|---|---|
일반 |
1 |
10.123 |
ab |
특수 |
2 |
20.123 |
ab |
일반 |
3 |
30.123 |
ef |
특수 |
4 |
40.123 |
gh |
옵션 |
5 |
50.123 |
ij |
A 컬럼을 이용하여 조건을 주어 result 컬럼을 생성하여 결과를 출력하는 예제입니다.
... | case when A='일반' then '일반입니다.' when A='특수' then '특수입니다.' otherwise '다른타입입니다.'
A |
B |
C |
D |
result |
---|---|---|---|---|
일반 |
1 |
10.123 |
ab |
일반입니다. |
특수 |
2 |
20.123 |
ab |
특수입니다. |
일반 |
3 |
30.123 |
ef |
일반입니다. |
특수 |
4 |
40.123 |
gh |
특수입니다. |
옵션 |
5 |
50.123 |
ij |
타른타입입니다. |
B 컬럼을 이용하여 조건을 주어 what is this 컬럼을 생성하여 결과를 출력하는 예제입니다.
... | case when B>2 then 'three upper' otherwise 'two lower' as `what is this`
A |
B |
C |
D |
what is this |
---|---|---|---|---|
일반 |
1 |
10.123 |
ab |
two lower |
특수 |
2 |
20.123 |
ab |
two lower |
일반 |
3 |
30.123 |
ef |
three upper |
특수 |
4 |
40.123 |
gh |
three upper |
옵션 |
5 |
50.123 |
ij |
three upper |
C 컬럼을 이용하여 조건을 주어 result 컬럼을 생성하여 결과를 출력하는 예제입니다.
... | case when C*3+4 > 90 then 'TRUE' otherwise 'FALSE'
A |
B |
C |
D |
result |
---|---|---|---|---|
일반 |
1 |
10.123 |
ab |
FALSE |
특수 |
2 |
20.123 |
ab |
FALSE |
일반 |
3 |
30.123 |
ef |
TRUE |
특수 |
4 |
40.123 |
gh |
TRUE |
옵션 |
5 |
50.123 |
ij |
TRUE |
A 컬럼과 B 컬럼 C 컬럼을 이용하여 조건을 주어 test result 컬럼을 생성하여 결과를 출력하는 예제입니다.
... | case when `A`='일반' and `B`>2 then 'A,B result' when `C`=10.123 then 'C result' otherwise 0 as `test result`
A |
B |
C |
D |
test result |
---|---|---|---|---|
일반 |
1 |
10.123 |
ab |
C result |
특수 |
2 |
20.123 |
ab |
0 |
일반 |
3 |
30.123 |
ef |
A and B result |
특수 |
4 |
40.123 |
gh |
0 |
옵션 |
5 |
50.123 |
ij |
0 |
... | case when B<=5 then null
A |
B |
C |
D |
result |
---|---|---|---|---|
일반 |
1 |
10.123 |
ab |
null |
특수 |
2 |
20.123 |
ab |
null |
일반 |
3 |
30.123 |
ef |
null |
특수 |
4 |
40.123 |
gh |
null |
옵션 |
5 |
50.123 |
ij |
null |