카테고리:

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

DATASKETCHES_HLL_ACCUMULATE

집계가 끝날 때 스케치를 반환합니다.

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

DATASKETCHES_HLL 은 최종 카디널리티 추정치가 반환될 때 중간 상태를 버립니다. 대량 로딩 중 증분 카디널리티 추정과 같은 고급 사용 사례에서는 중간 상태를 유지하는 것이 좋습니다. 중간 상태는 나중에 다른 중간 상태와 결합(병합)되거나 외부 도구로 내보낼 수 있습니다.

DATASKETCHES_HLL 과 달리 DATASKETCHES_HLL_ACCUMULATE 는 카디널리티 추정치를 반환하지 않습니다. 대신, 최종 추정 단계를 건너뛰고 알고리즘 상태 자체를 반환합니다. 자세한 내용은 고유 값 개수 추정하기 섹션을 참조하십시오.

참고 항목:

DATASKETCHES_HLL_COMBINE , DATASKETCHES_HLL_ESTIMATE

구문

DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
Copy

필수 인자

expr

카디널리티(고유 값의 수)를 추정하려는 식입니다. 이는 일반적으로 열 이름이지만, 보다 일반적인 식일 수 있습니다.

선택적 인자

max_log_k

이 결합에 대한 K의 최대값(log2)입니다. 4에서 21 사이의 INTEGER 값을 지정합니다. 자세한 내용은 Apache DataSketches 설명서 를 참조하십시오.

기본값: 12

반환

이 함수는 Apache Datasketches 라이브러리와 호환되는 BINARY 값을 반환합니다.

사용법 노트

  • DISTINCT 는 구문적으로 지원되지만, 효과가 없습니다.

  • 이 함수는 다음 데이터 타입의 값인 인자를 지원합니다.

    • 문자열 및 이진 데이터 타입 (예: VARCHAR 및 BINARY).

      예를 들어 다음과 같은 함수 호출이 지원됩니다.

      SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
      
      Copy
      SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
      
      Copy
    • 부동 소수점 숫자의 데이터 타입 (예: FLOAT 및 DOUBLE)

      DataSketches 라이브러리는 이러한 값을 DOUBLE 값으로 형변환합니다.

    • 고정 소수점 숫자의 데이터 타입 (예: INTEGER 및 NUMERIC).

      이 함수는 소수 자릿수가 0인 숫자 유형만 지원합니다. 그러나 소수 자릿수가 0이 아닌 숫자 값을 부동 소수점 숫자의 데이터 타입으로 형변환할 수 있습니다.

      DataSketches 라이브러리는 이러한 값을 64비트의 부호 있는 INTEGER 에서 64비트의 부호 있는 INTEGER 값의 범위로 형변환합니다.

      DataSketches 라이브러리는 64비트의 부호 있는 INTEGER 범위를 초과하는 INTEGER 값(예: 128비트 정수 값)을 직접 형변환하지 않습니다. 그러나 Snowflake는 DataSketches 에서 지원하는 DOUBLE 값으로 자동 변환하여 이러한 값을 계속 지원합니다. 이 동작은 datasketches-python 라이브러리의 동작과 동일합니다.

    다른 데이터 타입의 값은 지원되지 않습니다. 예를 들어 VARIANT 및 ARRAY 값은 지원되지 않습니다.

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

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

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

SELECT g,
       DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
  FROM datasketches_demo
  GROUP BY g;
Copy
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES                     |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D         |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+