데이터 분석에서 APPROX_QUANTILES 함수 사용하기
데이터 분석에서 대량의 데이터를 빠르게 요약하고 인사이트를 도출할 때가 많습니다. 특히, 데이터 분포를 이해하기 위해 분위수 계산이 중요한데, 데이터 크기가 크거나 실시간 처리가 필요할 때 전통적인 방식은 비효율적일 수 있습니다. 이런 경우 APPROX_QUANTILES 함수가 유용합니다.
APPROX_QUANTILES란?
APPROX_QUANTILES는 대규모 데이터에서 분위수를 근사값으로 빠르게 계산하는 함수입니다. Google BigQuery와 같은 데이터 웨어하우스에서 널리 사용되며, 분산 처리 환경에서 특히 유용합니다.
이 함수는 데이터 분포를 요약하기 위해 필요한 분위수를 효율적으로 계산하며, 4분위수나 10분위수 계산 등에 활용됩니다.
기본 사용법
APPROX_QUANTILES의 기본 구문은 다음과 같습니다:
APPROX_QUANTILES(input_column, num_buckets)
주요 매개변수
- input_column: 분위수를 계산할 대상 열
- num_buckets: 몇 개의 분위수로 나눌지 지정 (예: 4분위수는 num_buckets=4)
이 함수는 결과를 배열 형식으로 반환합니다. 예를 들어, APPROX_QUANTILES(x, 4)는 [최소값, Q1, Q2, Q3, 최대값] 형태의 배열을 제공합니다.
예제
1. APPROX_QUANTILES(x, 2)
데이터를 2구간으로 나누어 최솟값, 중앙값, 최댓값을 반환합니다. 간단히 데이터 분포를 파악할 때 유용합니다.
SELECT
APPROX_QUANTILES(x, 2) AS summary
FROM
example_table;
결과: [최소값, 중앙값(Q2), 최대값]
2. APPROX_QUANTILES(x, 100)[OFFSET(90)]
데이터를 100분위수로 나누고 90번째 분위수를 반환합니다. 상위 10% 경계값을 찾는 데 적합합니다.
SELECT
APPROX_QUANTILES(x, 100)[OFFSET(90)] AS percentile_90
FROM
example_table;
3. APPROX_QUANTILES(DISTINCT x, 2)
중복을 제외하고 2분위수를 계산합니다. 중복 제거 후 분위수 계산이 필요할 때 적합합니다.
SELECT
APPROX_QUANTILES(DISTINCT x, 2) AS summary_distinct
FROM
example_table;
4. FORMAT("%T", APPROX_QUANTILES(x, 2 RESPECT NULLS)) AS approx_quantiles
NULL 값을 포함하여 2분위수를 계산하고 결과를 형식화합니다. NULL을 포함한 데이터를 분석할 때 유용합니다.
SELECT
FORMAT("%T", APPROX_QUANTILES(x, 2 RESPECT NULLS)) AS approx_quantiles
FROM
example_table;
5. FORMAT("%T", APPROX_QUANTILES(DISTINCT x, 2 RESPECT NULLS)) AS approx_quantiles
중복 제거와 NULL 포함 상태로 2분위수를 계산하고 형식화합니다. 복잡한 데이터 처리에 적합합니다.
SELECT
FORMAT("%T", APPROX_QUANTILES(DISTINCT x, 2 RESPECT NULLS)) AS approx_quantiles
FROM
example_table;
장단점
장점
- 빠른 계산: 대규모 데이터도 빠르게 계산
- 메모리 효율적: 정확한 분위수 계산보다 메모리 사용량 적음
- 분산 환경 적합: 분산 처리 시스템에서 효율적
단점
- 근사값 반환: 정밀도가 중요한 경우 부적합
- 파라미터 의존: num_buckets 설정에 따라 결과 가독성 달라짐
활용 사례
- 대규모 데이터 요약: 빅데이터의 분포를 빠르게 파악
- 실시간 데이터 분석: 스트리밍 데이터 분위수 계산
- 대시보드 요약 정보: 근사 분위수를 통해 빠르게 정보 제공
마무리
APPROX_QUANTILES는 대규모 데이터셋에서 분위수를 빠르고 효율적으로 계산할 수 있는 강력한 도구입니다. 데이터 탐색 단계나 실시간 분석에서 유용하며, 근사값이라는 특성을 이해하고 적절히 활용하는 것이 중요합니다.