본문 바로가기

CSE/GCP

BigQuery - APPROX_QUANTILES

반응형

데이터 분석에서 APPROX_QUANTILES 함수 사용하기

데이터 분석에서 대량의 데이터를 빠르게 요약하고 인사이트를 도출할 때가 많습니다. 특히, 데이터 분포를 이해하기 위해 분위수 계산이 중요한데, 데이터 크기가 크거나 실시간 처리가 필요할 때 전통적인 방식은 비효율적일 수 있습니다. 이런 경우 APPROX_QUANTILES 함수가 유용합니다.

APPROX_QUANTILES란?

APPROX_QUANTILES는 대규모 데이터에서 분위수를 근사값으로 빠르게 계산하는 함수입니다. Google BigQuery와 같은 데이터 웨어하우스에서 널리 사용되며, 분산 처리 환경에서 특히 유용합니다.

이 함수는 데이터 분포를 요약하기 위해 필요한 분위수를 효율적으로 계산하며, 4분위수나 10분위수 계산 등에 활용됩니다.

기본 사용법

APPROX_QUANTILES의 기본 구문은 다음과 같습니다:

APPROX_QUANTILES(input_column, num_buckets)

주요 매개변수

  1. input_column: 분위수를 계산할 대상 열
  2. 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;

장단점

장점

  1. 빠른 계산: 대규모 데이터도 빠르게 계산
  2. 메모리 효율적: 정확한 분위수 계산보다 메모리 사용량 적음
  3. 분산 환경 적합: 분산 처리 시스템에서 효율적

단점

  1. 근사값 반환: 정밀도가 중요한 경우 부적합
  2. 파라미터 의존: num_buckets 설정에 따라 결과 가독성 달라짐

활용 사례

  1. 대규모 데이터 요약: 빅데이터의 분포를 빠르게 파악
  2. 실시간 데이터 분석: 스트리밍 데이터 분위수 계산
  3. 대시보드 요약 정보: 근사 분위수를 통해 빠르게 정보 제공

마무리

APPROX_QUANTILES는 대규모 데이터셋에서 분위수를 빠르고 효율적으로 계산할 수 있는 강력한 도구입니다. 데이터 탐색 단계나 실시간 분석에서 유용하며, 근사값이라는 특성을 이해하고 적절히 활용하는 것이 중요합니다.

 

참고: https://cloud.google.com/bigquery/docs/reference/standard-sql/approximate_aggregate_functions#approx_quantiles

반응형