Filter, Case와 Join에서 null 처리하기
null은 값이 없거나 알 수 없는 상태를 나타냅니다. 조건식은 true, false 또는 null을 반환할 수 있으며, 조건을 충족하는 값은 true뿐입니다. false와 null은 조건을 충족하지 않습니다.
동등 비교의 두 방식
is equal to는 null을 비교 가능한 값으로 다루는 null-safe 동등 비교입니다. 두 값이 모두 null이면 true이고 하나만 null이면 false입니다. is not equal to는 이 동등 비교의 반대 결과를 사용합니다.
is equal to (not null safe)와 is not equal to (not null safe)는 한쪽이라도 null이면 결과가 null입니다.
| 왼쪽 | 오른쪽 | null-safe 같음 | null-safe 다름 | not-null-safe 같음 또는 다름 |
|---|---|---|---|---|
| null | null | true | false | null |
| null | 값 | false | true | null |
| 값 | null | false | true | null |
두 값이 모두 존재할 때는 각각 실제 값의 같음 또는 다름을 비교합니다. Equals 표현식의 Null safe 설정으로 이 차이를 확인할 수 있습니다.
값의 누락 여부만 확인하려면 is null 또는 is not null을 사용합니다. 이 두 조건은 true 또는 false를 반환합니다.
변환별 조건 사용
| 변환 | 조건 결과의 처리 |
|---|---|
| Filter의 Keep rows | true인 행만 유지합니다. false 또는 null인 행은 제외합니다. |
| Case | 순서대로 조건을 평가하여 처음 true인 분기의 값을 반환합니다. null 조건은 건너뛰고 다음 분기나 기본값으로 진행합니다. |
| Join | true인 두 행만 일치하는 것으로 봅니다. null 조건은 일치하지 않습니다. |
Join에서 일치하지 않은 행의 처리 방식은 조인 유형에 따라 다릅니다. Inner는 제외하고, Left, Right 또는 Outer는 보존하는 쪽의 행을 남기면서 상대편 열을 null로 채울 수 있습니다.
null-safe 조인에서 양쪽에 같은 null 키가 여러 개 있으면 서로 일치하는 행 조합도 생길 수 있습니다. 결측값을 같은 업무 키로 볼지 먼저 정하고 필요한 경우 명시적인 is null 조건으로 별도 처리합니다.