HLL_ACCUMULATE
집계 종료 시 HyperLogLog 상태를 반환합니다.
HyperLogLog에 대한 자세한 내용은 고유 값 개수 추정하기 를 참조하십시오.
HLL 은 최종 카디널리티 추정치가 반환될 때 중간 상태를 버립니다. 대량 로딩 중 증분 카디널리티 추정과 같은 고급 사용 사례에서는 사용자가 중간 상태를 유지하려고 할 수 있습니다. 중간 상태는 나중에 다른 중간 상태와 결합(병합)되거나 외부 도구로 내보낼 수 있습니다.
HLL 과 달리 HLL_ACCUMULATE 는 카디널리티 추정치를 반환하지 않습니다. 대신, 최종 추정 단계를 건너뛰고 알고리즘 상태 자체를 반환합니다. 상태는 최대 4096바이트의 이진입니다. 자세한 내용은 고유 값 개수 추정하기 섹션을 참조하십시오.
참고 항목: HLL_COMBINE , HLL_ESTIMATE
구문
집계 함수
Copy Expand
HLL_ACCUMULATE ( [ DISTINCT ] <expr> )
HLL_ACCUMULATE ( *)
Show less See more
Scroll to top
윈도우 함수
Copy Expand
HLL_ACCUMULATE ( [ DISTINCT ] <expr> ) OVER ( [ PARTITION BY <expr1> ] )
HLL_ACCUMULATE ( *) OVER ( [ PARTITION BY <expr1> ] )
Show less See more
Scroll to top
OVER 절에 대한 자세한 내용은 윈도우 함수 구문 및 사용법 섹션을 참조하세요.
인자
expr 카디널리티(고유 값의 수)를 추정하려는 식입니다. 이는 일반적으로 열 이름이지만, 보다 일반적인 식일 수 있습니다.
사용법 노트
이 함수는 집계 함수 또는 :doc:` 윈도우 함수 </sql-reference/functions-window-syntax>`로 사용할 수 있습니다.
DISTINCT 는 구문적으로 지원되지만, 효과가 없습니다.
예
이는 캐나다 지방의 고유한 우편 번호의 수를 추정하기 위한 한 단계를 보여줍니다. 이 단계에서는 매니토바에 있는 고유한 우편 번호의 대략적인 수를 계산하고, 계산의 “주”에 대한 내부 표현을 저장합니다. 이를 나중에 다른 지방에 대한 유사한 정보와 결합할 수 있습니다.
Copy Expand
CREATE TABLE temporary_hll_state_for_manitoba AS
SELECT HLL_ACCUMULATE ( postal_code ) AS h_a_p_c
FROM postal_data
WHERE province = 'Manitoba' ;
Show less See more
Scroll to top
Here is another example. This example shows how to use the three related functions
HLL_ACCUMULATE, HLL_ESTIMATE, and HLL_COMBINE.
간단한 테이블과 데이터를 만듭니다.
Copy Expand
CREATE OR REPLACE SEQUENCE seq92 ;
CREATE OR REPLACE TABLE sequence_demo ( c1 INTEGER DEFAULT seq92 . nextval , dummy SMALLINT );
INSERT INTO sequence_demo ( dummy ) VALUES ( 0 );
INSERT INTO sequence_demo ( dummy ) SELECT dummy FROM sequence_demo ;
INSERT INTO sequence_demo ( dummy ) SELECT dummy FROM sequence_demo ;
INSERT INTO sequence_demo ( dummy ) SELECT dummy FROM sequence_demo ;
Show less See more
Scroll to top
Create a table that contains the “state” that represents the current
approximate cardinality information for the table named sequence_demo :
Copy Expand
CREATE OR REPLACE TABLE resultstate1 AS (
SELECT HLL_ACCUMULATE ( c1 ) AS rs1
FROM sequence_demo );
Show less See more
Scroll to top
Now create a second table and add data. (In a more realistic situation,
the user could have loaded more data into the first table and divided the
data into non-overlapping sets based on the time that the data was loaded.)
Copy Expand
CREATE OR REPLACE TABLE test_table2 ( c1 INTEGER );
INSERT INTO test_table2 ( c1 ) SELECT c1 + 4 FROM sequence_demo ;
Show less See more
Scroll to top
새 데이터에 대한 “상태” 정보만 가져옵니다.
Copy Expand
CREATE OR REPLACE TABLE resultstate2 AS
( SELECT HLL_ACCUMULATE ( c1 ) AS rs1
FROM test_table2 );
Show less See more
Scroll to top
행의 두 배치에 대한 “상태” 정보를 결합합니다.
Copy Expand
CREATE OR REPLACE TABLE combined_resultstate ( c1 ) AS
SELECT HLL_COMBINE ( rs1 ) AS apc1
FROM (
SELECT rs1 FROM resultstate1
UNION ALL
SELECT rs1 FROM resultstate2
);
Show less See more
Scroll to top
결합된 행 세트의 대략적인 카디널리티를 가져옵니다.
Copy Expand
SELECT HLL_ESTIMATE ( c1 )
FROM combined_resultstate ;
Show less See more
Scroll to top
Expand
+------------------+
| HLL_ESTIMATE(C1) |
|------------------|
| 12 |
+------------------+
Show less See more
Scroll to top