본문 바로가기

Coursera 강의 정리/Modern Big Data Analysis with SQL

S2 Analyzing Big Data with SQL - W3 Filtering Data

Modern Big Data Analysis with SQL 특화 과정 중 두 번째 강의 Analyzing Big Data with SQL

세 번째 주차 Filtering Data 내용 정리입니다.

 

Data Analysis를 위해서 WHERE 구문을 활용한다.

WHERE
구문은 조건에 따라서 행을 필터링하며, 조건을 작성하기 위해서 Boolean Expression을 사용한다.

Boolean Expression 작성을 위해서는 Comparison ExpressionLogical Expression을 활용한다.

Missing Value(NULL) 값을 처리하는 것은 중요하다.

쉘 스크립트를 사용해서 Hive, Impala를 효율적으로 사용한다.

WHERE 구문

WHERE 구문은 SQL의 필수적인 구문은 아니다. 하지만 Data Analysis를 위해서 WHERE 구문을 빈번하게 활용한다. WHERE 구문은 조건(Condition)에 따라서 행(row)을 필터링한다. 이때 조건은 Boolean Expression으로 표현한다. Boolean Expression을 작성하기 위해서 Comparison Expression과 Logical Expression을 활용한다.

 

1)      Comparison Expression: 비교를 위한 표현식

2)     Logical Expression: 개별 Boolean Expression을 묶어서 하나의 Boolean Expression으로 구성하기 위해서 필요하다. 

Comparison Expression

1)      =                   동일할 경우 True를 반환한다

2)     != / <>           다를 경우 True를 반환한다

3)     < / <= / > / >= 대소 비교를 통해 조건을 만족하면 True를 반환한다.

4)     LIKE              문자열 비교를 위해서 사용하는 연산. %와 _를 적절하여서 패턴 매칭 가능

5)     BETWEEN      범위를 나타내는 표현식

6)     IN                  해당 값이 포함되어 있는지 파악

 

비교 연산을 사용할 때 Column Alias와 관련해서 주의한다. SELECT 절에서 설정한 Column Alias를 WHERE 구문에서 사용할 수 없다. 이는 SQL 엔진이 WHERE를 SELECT보다 먼저 처리하기 때문이다.

Logical Expression

WHERE 구문에서 다수의 Boolean Expression을 묶기 위해서 AND, OR, NOT과 같은 Logical Expression을 사용한다. 논리 연산의 순서에 따라서 의미가 달라지므로 괄호를 통해 우선순위를 제어하는 것을 권장한다.

Missing Value 처리

Missing Value를 SQL에서는 NULL이라고 표기한다. 특정 값이 NULL인지 파악하기 위해서는 IS NULL을 사용하며 =와 같은 Comparison Expression을 사용할 수 없다. 

 

NULL 과의 연산은 기본적으로 NULL이다. 이는 NULL이 알 수 없는 값이므로, 이러한 값과의 연산 역시 결과가 어떻게 될지 알 수 없기 때문이다. 하지만 NULL OR 1 또는 NULL AND 0과 같이 NULL 값이 어떠한 값이든 상관없이 결과가 정해지는 연산들이 있다. 이러한 경우를 제외하고는 NULL과의 연산은 NULL이다.

NULL 관련 명령어

IS DISTINCT FROM              : 비교하는 두 값이 다르거나 둘 중 하나만 NULL이면 True이다

IS NOT DISTINCT FROM      : 비교하는 두 값이 동일하거나 둘 다 NULL 이면 True이다

if(), CASE                           : NULL 인지 판단해서 참 일 경우와 거짓 일 경우 다른 선택 가능

nullif()                               : nullif()의 두 인자가 동일할 경우 NULL 반환. 0으로 나누는 것 방지하는 데 사용

ifnull()                               : NULL 판단하여서 NULL 일 경우 다른 값으로 처리

coalese()                            : 인자들 중 NULL 이 아닌 가장 앞선 값을 반환

 

Hive, Impala Shell Script

쉘 스크립트를 사용하여서 복잡한 쿼리를 반복해서 실행하거나 인자를 전달할 수 있다.

 

1)      Hive              : hivevar 키워드 활용

2)     Impala           : var 키워드 활용