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

  • 예제용 데이터 모양 입니다.

none

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