DATASKETCHES_HLL
DATASKETCHES_HLL
DATASKETCHES_HLL() 함수는 입력의 고유 카디널리티(distinct cardinality) 근사값을 반환해요(즉, DATASKETCHES_HLL(col1)은 COUNT(DISTINCT col1)의 근사값을 반환해요).
이 함수는 Apache DataSketches가 사용하는 형식의 바이너리 스케치(sketch)를 읽을 수 있는 HLL(HyperLogLog) 함수 버전이에요. 자세한 내용은 Apache DataSketches 문서를 참고하세요.
본문
문법
집계 함수(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 함수가 통합 스케치에 대해 같은 결과를 반환해요. 예는 결합된 바이너리 스케치의 카디널리티 추정 반환을 참고하세요.