Hive 내장 함수 종합 안내 (열 전환 및 집계 창 함수 포함)

Hive 함수 정리

본 문서는 Hive에서 사용 가능한 주요 내장 함수를 체계적으로 정리한 자료입니다. 수학, 조건, 문자열, 날짜, 집계, 행/열 변환, 그리고 창 함수 등 다양한 유형의 함수를 포함하며, 실제 쿼리 예제와 함께 설명됩니다.

기본 연산자

  • =: 동등 비교. 예: SELECT 1 WHERE 5 = 5;
  • <>: 불일치 비교. NULL 값이 포함되면 결과는 NULL.
  • <, >, <=, >=: 순서 비교. NULL 포함 시 NULL 반환.
  • IS NULL / IS NOT NULL: NULL 여부 확인.
  • LIKE: 단순 패턴 매칭 (%, _ 사용). 예: 'abcde' LIKE 'ab%'
  • RLIKE / REGEXP: Java 정규식 기반 매칭. 예: 'hello' RLIKE '^h.*o$'

수치 연산

  • +, -, *, /: 기본 산술 연산. 나눗셈은 항상 DOUBLE 반환.
  • %: 나머지 연산. 부동소수점 계산 시 오차 발생 가능 → ROUND(4.2 % 2, 2) 권장.
  • &, |, ^, ~: 비트 연산. ~는 비트 반전.
  • ROUND(a): 반올림. ROUND(3.5) = 4.
  • FLOOR(a): 내림. FLOOR(3.9) = 3.
  • CEIL(a): 올림. CEIL(3.1) = 4.
  • RAND([seed]): 무작위 숫자 생성. 시드 지정 시 일관된 결과.
  • EXP(a): 자연지수 ea.
  • LOG10(a), LOG2(a), LOG(base, a): 로그 계산.
  • POW(a, b), POWER(a, b): ab 계산.
  • SQRT(a): 제곱근.
  • ABS(a): 절대값.
  • PMOD(a, b): 양수로 나눈 나머지. 음수 처리에 유리.
  • SIN, COS, ASIN, ACOS: 삼각함수.

날짜 및 시간 함수

  • UNIX_TIMESTAMP(): 현재 타임스탬프 반환 (초 단위).
  • UNIX_TIMESTAMP(date_str): 문자열을 타임스탬프로 변환.
  • FROM_UNIXTIME(unix_ts, format): 타임스탬프를 포맷된 날짜 문자열로 변경.
  • TO_DATE(timestamp): 시간 부분 제거, 날짜만 추출.
  • YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND(): 날짜 구성 요소 추출.
  • DATEDIFF(end, start): 두 날짜 간의 일수 차이.
  • DATE_ADD(date, days): 지정된 일수만큼 후의 날짜.
  • DATE_SUB(date, days): 지정된 일수만큼 전의 날짜.

문자열 함수

  • LENGTH(str): 문자열 길이.
  • CONCAT(str1, str2, ...): 문자열 결합.
  • CONCAT_WS(sep, str1, ...): 구분자 포함 결합.
  • SUBSTR(str, pos, len): 부분 문자열 추출. 인덱스는 1부터 시작.
  • UPPER(str), LOWER(str): 대/소문자 변환.
  • TRIM(str): 양쪽 공백 제거.
  • LTRIM(str), RTRIM(str): 왼쪽/오른쪽 공백 제거.
  • REGEXP_REPLACE(str, pattern, replacement): 정규식으로 치환.
  • REGEXP_EXTRACT(str, pattern, index): 매칭 그룹 추출.
  • PARSE_URL(url, part, key): URL의 특정 부분(호스트, 쿼리 등) 추출.
  • GET_JSON_OBJECT(json_str, path): JSON 문자열에서 경로 기반 데이터 추출.
  • SPACE(n): 공백 문자열 생성.
  • REPEAT(str, n): 문자열 반복.
  • LPAD(str, len, pad), RPAD(str, len, pad): 왼쪽/오른쪽 패딩.
  • SPLIT(str, delim): 문자열 분할 → 배열 반환.
  • FIND_IN_SET(str, list): 쉼표로 구분된 리스트 내 위치 반환.

집계 함수

  • COUNT(*): 전체 행 수 (널 포함).
  • COUNT(DISTINCT col): 중복 제거 후 행 수.
  • SUM(col): 합계.
  • AVG(col): 평균.
  • MIN(col), MAX(col): 최소/최대값.
  • VARIANCE_POP, VARIANCE_SAMP: 전체/표본 분산.
  • STDDEV_POP, STDDEV_SAMP: 표준편차.
  • PERCENTILE(col, p): 정확한 백분율 값.
  • PERCENTILE_APPROX(col, p, B): 근사 백분율. B가 클수록 정확도 증가.
  • HISTOGRAM_NUMERIC(col, bins): 히스토그램 정보 반환.

행 전환 함수

  • EXPLODE(array_col): 배열을 각 요소별로 분해하여 여러 행으로 확장.
  • EXPLODE(map_col): 맵의 키-값 쌍을 별도 행으로 분리.
  • EXPLODE(SPLIT(str, delim)): 문자열을 분할 후 각 항목을 개별 행으로 만듦.

열 전환 함수

  • COLLECT_SET(col): 중복 제거 후 집합 생성.
  • COLLECT_LIST(col): 중복 포함 집합 생성.
  • CONCAT_WS(delim, COLLECT_SET(...)): 집계 후 문자열 결합.

창 함수 (Window Functions)

특정 그룹 내에서 행의 상대적 위치를 기반으로 연산 수행.

FUNCTION() OVER (
  [PARTITION BY column]
  [ORDER BY column]
  [ROWS BETWEEN n PRECEDING AND m FOLLOWING]
)

1. 순위 함수

  • ROW_NUMBER(): 연속적인 고유 번호. 중복 없음.
  • RANK(): 중복 시 다음 순위 건너뜀. 예: 1, 2, 3, 3, 5.
  • DENSE_RANK(): 중복 시 다음 순위 바로 이어짐. 예: 1, 2, 3, 3, 4.

2. 집계 함수

  • SUM(), AVG(), COUNT(), MIN(), MAX(): OVER 사용 시 윈도우 내 집계.

3. 시퀀스 함수

  • LAG(col, n): 현재 행 앞 n번째 행의 값.
  • LEAD(col, n): 현재 행 뒤 n번째 행의 값.
  • FIRST_VALUE(col): 윈도우 내 처음 값.
  • LAST_VALUE(col): 윈도우 내 마지막 값.
  • NTILE(n): 데이터를 n개의 구간으로 나누고 각 행에 구간 번호 할당.

예시: 성과 순위 산출

SELECT 
  department,
  employee_name,
  performance_score,
  RANK() OVER (PARTITION BY department ORDER BY performance_score DESC) AS rank_in_dept
FROM employee_performance;

태그: Hive SQL Window Function Data Transformation Aggregation

6월 25일 01:08에 게시됨