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:

DATASKETCHES_HLL_COMBINE , DATASKETCHES_HLL_ESTIMATE

Sintaxe

DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
Copy

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);
      
      Copy
      SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
      
      Copy
    • 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;
Copy

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;
Copy
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES                     |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D         |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+