- Categorias:
Funções de agregação (Estimativa de similaridade) , Funções de janela
MINHASH_COMBINE¶
Combina estados de entrada de MinHash em um único estado de saída de MinHash. Este estado de minhash pode então ser introduzido na função APPROXIMATE_SIMILARITY para estimar a similaridade com outros estados MinHash.
Isto permite o uso de casos em que MINHASH é executado em conjuntos de linhas horizontais da mesma tabela, produzindo um estado MinHash para cada conjunto de linhas. Estes estados podem então ser combinados usando MINHASH_COMBINE, produzindo o mesmo estado de saída que uma única execução de MINHASH em toda a tabela.
Para obter mais informações sobre os estados MinHash, consulte Estimativa da similaridade de dois ou mais conjuntos.
- Consulte também:
Sintaxe¶
MINHASH_COMBINE( [ DISTINCT ] <state> )
Notas de uso¶
DISTINCT pode ser incluído como um argumento, mas não tem efeito.
A entrada MinHash
state
deve ter matrizes MinHash de comprimento igual.
Exemplos¶
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 |
| } |
+-----------------------+
Aqui está um exemplo mais amplo, mostrando as três funções relacionadas MINHASH
, MINHASH_COMBINE
e APPROXIMATE_SIMILARITY
. Este exemplo cria 3 tabelas (ta, tb e tc), duas das quais (ta e tb) são similares, e duas das quais (ta e tc) são completamente diferentes.
Criar e preencher tabelas com valores:
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);Calcular as informações de minhash para o conjunto inicial de dados:
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;Adicionar mais dados a uma das tabelas:
INSERT INTO ta (i) VALUES (12);Demonstrar a função
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) );Esta consulta mostra a similaridade aproximada das duas tabelas semelhantes (ta e tb):
SELECT APPROXIMATE_SIMILARITY (mh) FROM ( (SELECT mh FROM minhash_a) UNION ALL (SELECT mh FROM minhash_b) ); +-----------------------------+ | APPROXIMATE_SIMILARITY (MH) | |-----------------------------| | 0.75 | +-----------------------------+Esta consulta mostra a similaridade aproximada das duas tabelas muito diferentes (ta e tc):
SELECT APPROXIMATE_SIMILARITY (mh) FROM ( (SELECT mh FROM minhash_a) UNION ALL (SELECT mh FROM minhash_c) ); +-----------------------------+ | APPROXIMATE_SIMILARITY (MH) | |-----------------------------| | 0 | +-----------------------------+