- 카테고리:
집계 함수 (Cardinality Estimation) , 윈도우 함수 구문 및 사용법
DATASKETCHES_HLL_ACCUMULATE¶
집계가 끝날 때 스케치를 반환합니다.
이 함수는 Apache DataSketches 에서 사용하는 형식의 이진 스케치를 읽을 수 있는 HLL HyperLogLog 함수의 버전입니다. 자세한 내용은 Apache DataSketches 설명서 를 참조하십시오.
DATASKETCHES_HLL 은 최종 카디널리티 추정치가 반환될 때 중간 상태를 버립니다. 대량 로딩 중 증분 카디널리티 추정과 같은 고급 사용 사례에서는 중간 상태를 유지하는 것이 좋습니다. 중간 상태는 나중에 다른 중간 상태와 결합(병합)되거나 외부 도구로 내보낼 수 있습니다.
DATASKETCHES_HLL 과 달리 DATASKETCHES_HLL_ACCUMULATE 는 카디널리티 추정치를 반환하지 않습니다. 대신, 최종 추정 단계를 건너뛰고 알고리즘 상태 자체를 반환합니다. 자세한 내용은 고유 값 개수 추정하기 섹션을 참조하십시오.
구문¶
DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
필수 인자¶
expr
카디널리티(고유 값의 수)를 추정하려는 식입니다. 이는 일반적으로 열 이름이지만, 보다 일반적인 식일 수 있습니다.
선택적 인자¶
max_log_k
이 결합에 대한 K의 최대값(log2)입니다. 4에서 21 사이의 INTEGER 값을 지정합니다. 자세한 내용은 Apache DataSketches 설명서 를 참조하십시오.
기본값: 12
반환¶
이 함수는 Apache Datasketches 라이브러리와 호환되는 BINARY 값을 반환합니다.
사용법 노트¶
DISTINCT 는 구문적으로 지원되지만, 효과가 없습니다.
이 함수는 다음 데이터 타입의 값인 인자를 지원합니다.
문자열 및 이진 데이터 타입 (예: VARCHAR 및 BINARY).
예를 들어 다음과 같은 함수 호출이 지원됩니다.
SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
부동 소수점 숫자의 데이터 타입 (예: 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;
DATASKETCHES_HLL_ACCUMULATE 함수를 사용하여 열 v
의 데이터에 대한 두 개의 이진 스케치를 만들고 열 g
의 값 1
및 2
로 그룹화합니다.
SELECT g,
DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
FROM datasketches_demo
GROUP BY g;
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+