DATASKETCHES_HLL

DATASKETCHES_HLL

DATASKETCHES_HLL() 함수는 입력의 고유 카디널리티(distinct cardinality) 근사값을 반환해요(즉, DATASKETCHES_HLL(col1)은 COUNT(DISTINCT col1)의 근사값을 반환해요).

이 함수는 Apache DataSketches가 사용하는 형식의 바이너리 스케치(sketch)를 읽을 수 있는 HLL(HyperLogLog) 함수 버전이에요. 자세한 내용은 Apache DataSketches 문서를 참고하세요.

출처: Snowflake SQL Reference

본문

문법

집계 함수(Aggregate function)

DATASKETCHES_HLL( [ DISTINCT ] <expr1> [ , <max_log_k> ] )

윈도우 함수(Window function)

DATASKETCHES_HLL( [ DISTINCT ] <expr1> [ , <max_log_k> ] )
  OVER ( [ PARTITION BY <expr2> ] )

필수 인자

expr1 — 고유 카디널리티를 추정할 표현식이에요.

선택 인자

max_log_k — 스케치 크기 매개변수예요.

반환

이 함수는 DOUBLE 타입 값을 반환해요.

입력이 비어 있으면 출력은 0.0이에요.

사용 메모

  • DISTINCT는 문법적으로 지원되지만 효과는 없어요.
  • 이 함수는 다음 데이터 타입의 값인 인자를 지원해요. 다른 데이터 타입의 값은 지원되지 않아요. 예를 들어 VARIANT와 ARRAY 값은 지원되지 않아요.
  • NULL 값과 집계 함수에 대한 자세한 내용은 집계 함수와 NULL 값을 참고하세요.
  • 이 함수를 윈도우 함수로 호출할 때는 다음을 지원하지 않아요.

예제

테이블을 만들고 값을 삽입해요.

CREATE OR REPLACE TABLE datasketches_demo(v INT, g INT);

INSERT INTO datasketches_demo SELECT 1, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 5, 2;

다음 예제들은 테이블의 데이터를 사용해요.

컬럼의 그룹화된 데이터 고유 카디널리티 추정

DATASKETCHES_HLL 함수를 사용해 컬럼 g의 값으로 그룹화된 컬럼 v 데이터의 고유 카디널리티를 근사해요.

SELECT g,
       DATASKETCHES_HLL(v),
       COUNT(DISTINCT v)
  FROM datasketches_demo GROUP BY g;
+---+---------------------+-------------------+
| G | DATASKETCHES_HLL(V) | COUNT(DISTINCT V) |
|---+---------------------+-------------------|
| 1 |         2.000000005 |                 2 |
| 2 |         3.000000015 |                 3 |
+---+---------------------+-------------------+

출력은 컬럼 g의 값 1에 대해 컬럼 v에 서로 다른 값이 약 2개(즉, 1과 2) 있다는 것을 보여줘요. 컬럼 g의 값 2에 대해 컬럼 v에 서로 다른 값이 약 3개(즉, 1, 4, 5) 있어요. COUNT(DISTINCT v) 호출은 추정값 대신 정확한 고유 값 수를 반환해요.

DATASKETCHES_HLL_ACCUMULATE 함수로 그룹화된 데이터에서 바이너리 스케치를 만들면, DATASKETCHES_HLL_ESTIMATE 함수가 누적된 스케치에 대해 같은 결과를 반환해요. 예는 누적된 바이너리 스케치의 카디널리티 추정 반환을 참고하세요.

컬럼의 모든 데이터 고유 카디널리티 추정

DATASKETCHES_HLL 함수를 사용해 컬럼 v의 전체 데이터 고유 카디널리티를 근사해요.

SELECT DATASKETCHES_HLL(v),
       COUNT(DISTINCT v)
  FROM datasketches_demo;
+---------------------+-------------------+
| DATASKETCHES_HLL(V) | COUNT(DISTINCT V) |
|---------------------+-------------------|
|          4.00000003 |                 4 |
+---------------------+-------------------+

출력은 컬럼 v에 서로 다른 값이 약 4개(즉, 1, 2, 4, 5) 있다는 것을 보여줘요. COUNT(DISTINCT v) 호출은 추정값 대신 정확한 고유 값 수를 반환해요.

DATASKETCHES_HLL_ACCUMULATE 함수로 그룹화된 데이터에서 바이너리 스케치를 만든 뒤 DATASKETCHES_HLL_COMBINE 함수로 스케치를 하나로 결합하면, DATASKETCHES_HLL_ESTIMATE 함수가 통합 스케치에 대해 같은 결과를 반환해요. 예는 결합된 바이너리 스케치의 카디널리티 추정 반환을 참고하세요.

더 알아보기