Categorias:

Funções de agregação (Cardinality Estimation) , Sintaxe e uso da função de janela

DATASKETCHES_HLL_ESTIMATE

Retorna a estimativa de cardinalidade para o esboço fornecido.

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.

Um esboço produzido pela função DATASKETCHES_HLL_COMBINE pode ser usado para calcular uma estimativa de cardinalidade usando a função DATASKETCHES_HLL_ESTIMATE.

Sintaxe

DATASKETCHES_HLL_ESTIMATE( <binary_sketch> )
Copy

Argumentos

binary_sketch

Uma expressão que contém informações de esboço em formato binário.

Retornos

A função retorna um valor do tipo DOUBLE.

Se a entrada estiver vazia, a saída será 0.0.

Nota

Essa função retorna um valor de um tipo diferente da função HLL_ESTIMATE, que retorna um valor INTEGER.

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

Os exemplos a seguir usam os dados da tabela.

Retorna a estimativa de cardinalidade para esboços de binário acumulados

O exemplo a seguir executa as seguintes ações:

  1. A função DATASKETCHES_HLL_ACCUMULATE cria dois esboços binários para os dados na coluna v, agrupados pelos valores 1 e 2 na coluna g

  2. A função DATASKETCHES_HLL_ESTIMATE retorna a estimativa de cardinalidade para cada esboço acumulado.

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT g, DATASKETCHES_HLL_ESTIMATE(accumulated_sketches) AS accumulated_estimate
  FROM accumulated;
Copy
+---+----------------------+
| G | ACCUMULATED_ESTIMATE |
|---+----------------------|
| 1 |          2.000000005 |
| 2 |          3.000000015 |
+---+----------------------+

Você pode ver os valores dos esboços acumulados no exemplo em DATASKETCHES_HLL_ACCUMULATE.

Retorna a estimativa de cardinalidade para esboços de binário combinados

O exemplo a seguir executa as seguintes ações:

  1. A função DATASKETCHES_HLL_ACCUMULATE cria dois esboços binários para os dados na coluna v, agrupados pelos valores 1 e 2 na coluna g

  2. A função DATASKETCHES_HLL_COMBINE combina esses esboços de binário para unificá-los.

  3. A função DATASKETCHES_HLL_ESTIMATE retorna a estimativa de cardinalidade para o esboço unificado.

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g),
  combined AS (
    SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS unified
      FROM accumulated)
SELECT DATASKETCHES_HLL_ESTIMATE(unified) AS unified_estimate
  FROM combined;
Copy
+------------------+
| UNIFIED_ESTIMATE |
|------------------|
|       4.00000003 |
+------------------+

Você pode ver o valor dos esboços combinados no exemplo em DATASKETCHES_HLL_COMBINE.