카테고리:

집계 함수 (Cardinality Estimation) , 윈도우 함수 구문 및 사용법

DATASKETCHES_HLL_ESTIMATE

주어진 스케치에 대한 카디널리티 추정치를 반환합니다.

이 함수는 Apache DataSketches 에서 사용하는 형식의 이진 스케치를 읽을 수 있는 HLL HyperLogLog 함수의 버전입니다. 자세한 내용은 Apache DataSketches 설명서 를 참조하십시오.

DATASKETCHES_HLL_COMBINE 함수로 생성된 스케치는 DATASKETCHES_HLL_ESTIMATE 함수를 사용하여 카디널리티 추정치를 계산하는 데 사용할 수 있습니다.

구문

DATASKETCHES_HLL_ESTIMATE( <binary_sketch> )
Copy

인자

binary_sketch

이진 형식으로 스케치 정보를 포함하는 식입니다.

반환

함수는 DOUBLE 형식의 값을 반환합니다.

입력이 비어 있으면 출력은 0.0 입니다.

참고

이 함수는 INTEGER 값을 반환하는 HLL_ESTIMATE 함수와 다른 유형의 값을 반환합니다.

테이블을 만들고 값을 삽입합니다.

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;
Copy

다음 예제에서는 테이블의 데이터를 사용합니다.

누적된 이진 스케치에 대한 카디널리티 추정치 반환하기

다음 예제에서는 다음 작업을 수행합니다.

  1. DATASKETCHES_HLL_ACCUMULATE 함수는 열 v 의 데이터에 대한 두 개의 이진 스케치를 만들고 열 g 의 값 12 로 그룹화합니다.

  2. DATASKETCHES_HLL_ESTIMATE 함수는 누적된 각 스케치에 대한 카디널리티 추정치를 반환합니다.

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT g, DATASKETCHES_HLL_ESTIMATE(accumulated_sketches) AS accumulated_estimate
  FROM accumulated;
Copy
+---+----------------------+
| G | ACCUMULATED_ESTIMATE |
|---+----------------------|
| 1 |          2.000000005 |
| 2 |          3.000000015 |
+---+----------------------+

예제에서 누적된 스케치 값을 DATASKETCHES_HLL_ACCUMULATE 에서 확인할 수 있습니다.

결합된 이진 스케치에 대한 카디널리티 추정치 반환하기

다음 예제에서는 다음 작업을 수행합니다.

  1. DATASKETCHES_HLL_ACCUMULATE 함수는 열 v 의 데이터에 대한 두 개의 이진 스케치를 만들고 열 g 의 값 12 로 그룹화합니다.

  2. DATASKETCHES_HLL_COMBINE 함수는 이러한 이진 스케치를 결합하여 통합합니다.

  3. DATASKETCHES_HLL_ESTIMATE 함수는 통합 스케치에 대한 카디널리티 추정치를 반환합니다.

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g),
  combined AS (
    SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS unified
      FROM accumulated)
SELECT DATASKETCHES_HLL_ESTIMATE(unified) AS unified_estimate
  FROM combined;
Copy
+------------------+
| UNIFIED_ESTIMATE |
|------------------|
|       4.00000003 |
+------------------+

DATASKETCHES_HLL_COMBINE 에서 예제에서 결합된 스케치의 값을 확인할 수 있습니다.