- Categorias:
Funções de agregação (Cardinality Estimation) , Sintaxe e uso da função de janela
DATASKETCHES_HLL_ACCUMULATE¶
Retorna o esboço no fim da agregação.
Essa função é uma versão da função HLL HyperLogLog que pode ler esboços de binário no formato usado pelo Apache DataSketches. Para obter mais informações, consulte a documentação do Apache DataSketches.
DATASKETCHES_HLL descarta seu estado intermediário quando a estimativa final de cardinalidade é retornada. Em casos de uso avançado, como a estimativa de cardinalidade incremental durante o carregamento em massa, talvez você queira manter o estado intermediário. O estado intermediário pode posteriormente ser combinado (fundido) com outros estados intermediários, ou pode ser exportado para ferramentas externas.
Em contraste com DATASKETCHES_HLL, DATASKETCHES_HLL_ACCUMULATE não retorna uma estimativa de cardinalidade. Em vez disso, ele pula a etapa final de estimativa e retorna o próprio estado do algoritmo. Para obter mais informações, consulte Estimativa do número de valores distintos.
- Consulte também:
Sintaxe¶
DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
Argumentos exigidos¶
expr
A expressão para a qual você deseja estimar a cardinalidade (número de valores distintos). Este é normalmente um nome de coluna, mas pode ser uma expressão mais geral.
Argumentos opcionais¶
max_log_k
O valor máximo, em log2, de K para essa união. Especifique um valor INTEGER entre 4 e 21, inclusive. Para obter mais informações, consulte a documentação do Apache DataSketches.
Padrão: 12
Retornos¶
A função retorna um valor BINARY que é compatível com a biblioteca Apache Datasketches.
Notas de uso¶
DISTINCT é suportado sintaticamente, mas não tem efeito.
A função aceita argumentos que são valores dos seguintes tipos de dados:
Tipos de dados de cadeia de caracteres e binários (por exemplo, VARCHAR e BINARY).
Por exemplo, há suporte para as seguintes chamadas de função:
SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
Tipos de dados para números de ponto flutuante (por exemplo, FLOAT e DOUBLE)
A biblioteca DataSketches converte esses valores em valores DOUBLE.
Tipos de dados para números de ponto fixo (por exemplo, INTEGER e NUMERIC).
A função só é compatível com tipos numéricos com uma escala de 0. No entanto, você pode converter valores numéricos com uma escala diferente de 0 em tipos de dados para um número de ponto flutuante.
A biblioteca DataSketches converte esses valores no intervalo de um valor INTEGER assinado de 64 bits para um valor INTEGER assinado de 64 bits.
A biblioteca DataSketches não converte diretamente os valores INTEGER que excedem o intervalo INTEGER assinado de 64 bits (como valores inteiros de 128 bits). No entanto, o Snowflake ainda é compatível com esses valores, convertendo-os automaticamente em valores de DOUBLE, que são compatíveis com DataSketches. Esse comportamento é idêntico ao comportamento da biblioteca
datasketches-python
.
Não há suporte para valores de outros tipos de dados. Por exemplo, os valores VARIANT e ARRAY não são compatíveis.
Exemplos¶
Criar uma tabela e inserir valores:
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;
Use a função DATASKETCHES_HLL_ACCUMULATE para criar dois esboços de binário para os dados na coluna v
, agrupados pelos valores 1
e 2
na coluna g
:
SELECT g,
DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
FROM datasketches_demo
GROUP BY g;
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+