카테고리:

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

MINHASH_COMBINE

입력 MinHash 상태를 단일 MinHash 출력 상태로 결합합니다. 그런 다음 이 Minhash 상태는 APPROXIMATE_SIMILARITY 함수에 입력되어, 다른 MinHash 상태와의 유사성을 추정할 수 있습니다.

이를 통해, MINHASH가 동일 테이블의 수평 행 세트에 대해 실행되어 각 행 세트에 대해 MinHash 상태를 생성하는 사용 사례가 가능해집니다. 그런 다음 이러한 상태는 MINHASH_COMBINE 을 사용하여 결합되어, 전체 테이블에 대해 MINHASH 의 단일 실행과 동일한 출력 상태를 생성할 수 있습니다.

MinHash 상태에 대한 자세한 내용은 2개 이상 세트의 유사성 추정하기 를 참조하십시오.

참고 항목:

MINHASH

구문

MINHASH_COMBINE( [ DISTINCT ] <state> ) 
Copy

사용법 노트

  • DISTINCT는 인자로 포함될 수 있지만, 효과는 없습니다.

  • 입력 MinHash state 에는 길이가 동일한 MinHash 배열이 있어야 합니다.

USE SCHEMA snowflake_sample_data.tpch_sf1; SELECT MINHASH_COMBINE(mh) FROM ( (SELECT MINHASH(5, c2) mh FROM orders WHERE c2 <= 10000) UNION (SELECT MINHASH(5, c2) mh FROM orders WHERE c2 > 10000 AND c2 <= 20000) UNION (SELECT MINHASH(5, C2) mh FROM orders WHERE c2 > 20000) ); +-----------------------+ | MINHASH_COMBINE(MH) | |-----------------------| | { | | "state": [ | | 628914288006793, | | 1071764954434168, | | 991489123966035, | | 2395105834644106, | | 680224867834949 | | ], | | "type": "minhash", | | "version": 1 | | } | +-----------------------+ 
Copy

다음은 세 가지 관련 함수 MINHASH, MINHASH_COMBINE, APPROXIMATE_SIMILARITY 를 보여주는 보다 광범위한 예입니다. 이 예는 테이블 3개(ta, tb, tc)를 만들며, 그중 2개(ta 및 tb)는 유사하고 2개(ta 및 tc)는 완전히 다릅니다.

값이 있는 테이블을 만들고 채웁니다.

CREATE TABLE ta (i INTEGER); CREATE TABLE tb (i INTEGER); CREATE TABLE tc (i INTEGER); -- Insert values into the 3 tables. INSERT INTO ta (i) VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); -- Almost the same as the preceding values. INSERT INTO tb (i) VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (11); -- Different values and different number of values. INSERT INTO tc (i) VALUES (-1), (-20), (-300), (-4000); 
Copy

초기 데이터 세트에 대한 minhash 정보를 계산합니다.

CREATE TABLE minhash_a_1 (mh) AS SELECT MINHASH(100, i) FROM ta; CREATE TABLE minhash_b (mh) AS SELECT MINHASH(100, i) FROM tb; CREATE TABLE minhash_c (mh) AS SELECT MINHASH(100, i) FROM tc; 
Copy

테이블 중 하나에 더 많은 데이터를 추가합니다.

INSERT INTO ta (i) VALUES (12); 
Copy

MINHASH_COMBINE 함수를 보여줍니다.

-- Record minhash information about only the new rows: CREATE TABLE minhash_a_2 (mh) AS SELECT MINHASH(100, i) FROM ta WHERE i > 10; -- Now combine all the minhash info for the old and new rows in table ta. CREATE TABLE minhash_a (mh) AS SELECT MINHASH_COMBINE(mh) FROM ( (SELECT mh FROM minhash_a_1) UNION ALL (SELECT mh FROM minhash_a_2) ); 
Copy

이 쿼리는 유사한 테이블 두 개(ta 및 tb)의 대략적인 유사성을 보여줍니다.

SELECT APPROXIMATE_SIMILARITY (mh) FROM ( (SELECT mh FROM minhash_a) UNION ALL (SELECT mh FROM minhash_b) ); +-----------------------------+ | APPROXIMATE_SIMILARITY (MH) | |-----------------------------| | 0.75 | +-----------------------------+ 
Copy

이 쿼리는 매우 다른 테이블 두 개(ta 및 tc)의 대략적인 유사성을 보여줍니다.

SELECT APPROXIMATE_SIMILARITY (mh) FROM ( (SELECT mh FROM minhash_a) UNION ALL (SELECT mh FROM minhash_c) ); +-----------------------------+ | APPROXIMATE_SIMILARITY (MH) | |-----------------------------| | 0 | +-----------------------------+ 
Copy