

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Funções do Hyperloglog
<a name="hyperloglog-functions"></a>

As funções HyperLogLog (HLL) no SQL fornecem uma maneira de estimar com eficiência o número de elementos exclusivos (cardinalidade) em um grande conjunto de dados, mesmo quando o conjunto real de elementos exclusivos não está armazenado. 

Os principais benefícios do uso das funções HLL são:
+ **Eficiência de memória**: os esboços HLL exigem muito menos memória do que armazenar o conjunto completo de elementos exclusivos, tornando-os adequados para grandes conjuntos de dados.
+ **Computação distribuída**: os esboços do HLL podem ser combinados em várias fontes de dados ou nós de processamento, permitindo uma estimativa de contagem exclusiva distribuída e eficiente.
+ **Resultados aproximados**: o HLL fornece uma estimativa de contagem única aproximada, com uma compensação ajustável entre precisão e uso de memória (por meio do parâmetro de precisão).

Essas funções são particularmente úteis em cenários em que você precisa estimar o número de itens exclusivos, como em aplicativos de análise, armazenamento de dados e processamento de fluxo em tempo real.

AWS Clean Rooms suporta as seguintes funções de HLL.

**Topics**
+ [função HLL\$1SKETCH\$1AGG](HLL_SKETCH_AGG.md)
+ [função HLL\$1SKETCH\$1ESTIMATE](HLL_SKETCH_ESTIMATE.md)
+ [função HLL\$1UNION](HLL_UNION.md)
+ [função HLL\$1UNION\$1AGG](HLL_UNION_AGG.md)

# função HLL\$1SKETCH\$1AGG
<a name="HLL_SKETCH_AGG"></a>

A função agregada HLL\$1SKETCH\$1AGG cria um esboço HLL a partir dos valores na coluna especificada. Ele retorna um tipo de dados HLLSKETCH que encapsula os valores da expressão de entrada. 

A função agregada HLL\$1SKETCH\$1AGG funciona com qualquer tipo de dados e ignora valores NULL. 

Quando não há linhas em uma tabela ou todas as linhas são NULL, o esboço resultante não tem pares de valor de índice, como `{"version":1,"logm":15,"sparse":{"indices":[],"values":[]}}`.

## Sintaxe
<a name="HLL_SKETCH_AGG-synopsis"></a>

```
HLL_SKETCH_AGG (aggregate_expression[, lgConfigK ] )
```

## Argumento
<a name="HLL_SKETCH_AGG-argument"></a>

 *aggregate\$1expression*   
Qualquer expressão do tipo INT, BIGINT, STRING ou BINARY em relação à qual ocorrerá uma contagem exclusiva. Todos `NULL` os valores são ignorados.

*LG ConfigK*  
Uma constante INT opcional entre 4 e 21, inclusive com o padrão 12. A base logarítmica 2 de K, onde K é o número de compartimentos ou slots para o esboço.

## Tipo de retorno
<a name="HLL_SKETCH_AGG-return-type"></a>

A função HLL\$1SKETCH\$1AGG retorna um buffer BINÁRIO não NULL contendo o HyperLogLog esboço calculado devido ao consumo e agregação de todos os valores de entrada no grupo de agregação.

## Exemplos
<a name="HLL_SKETCH_AGG-examples"></a>

Os exemplos a seguir usam o algoritmo HyperLogLog (HLL) para estimar a contagem distinta de valores na `col` coluna. A `hll_sketch_agg(col, 12)` função agrega os valores na coluna col, criando um esboço HLL usando uma precisão de 12. A `hll_sketch_estimate()` função é então usada para estimar a contagem distinta de valores com base no esboço HLL gerado. O resultado final da consulta é 3, que representa a contagem distinta estimada de valores na `col` coluna. Nesse caso, os valores distintos são 1, 2 e 3. 

```
SELECT hll_sketch_estimate(hll_sketch_agg(col, 12))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3
```

O exemplo a seguir também usa o algoritmo HLL para estimar a contagem distinta de valores na `col` coluna, mas não especifica um valor de precisão para o esboço do HLL. Nesse caso, ele usa a precisão padrão de 14. A `hll_sketch_agg(col)` função pega os valores na `col` coluna e cria um esboço HyperLogLog (HLL), que é uma estrutura de dados compacta que pode ser usada para estimar a contagem distinta de elementos. A `hll_sketch_estimate(hll_sketch_agg(col))` função pega o esboço HLL criado na etapa anterior e calcula uma estimativa da contagem distinta de valores na coluna. `col` O resultado final da consulta é 3, que representa a contagem distinta estimada de valores na `col` coluna. Nesse caso, os valores distintos são 1, 2 e 3. 

```
SELECT hll_sketch_estimate(hll_sketch_agg(col))
FROM VALUES (1), (1), (2), (2), (3) tab(col);
3
```

# função HLL\$1SKETCH\$1ESTIMATE
<a name="HLL_SKETCH_ESTIMATE"></a>

A função HLL\$1SKETCH\$1ESTIMATE usa um esboço HLL e estima o número de elementos exclusivos representados pelo esboço. Ele usa o algoritmo HyperLogLog (HLL) para contar uma aproximação probabilística do número de valores exclusivos em uma determinada coluna, consumindo uma representação binária conhecida como buffer de esboço gerada anteriormente pela função HLL\$1SKETCH\$1AGG e retornando o resultado como um número inteiro grande. 

O algoritmo de esboço HLL fornece uma maneira eficiente de estimar o número de elementos exclusivos, mesmo para grandes conjuntos de dados, sem precisar armazenar o conjunto completo de valores exclusivos.

As `hll_union_agg` funções `hll_union` e também podem combinar esboços consumindo e mesclando esses buffers como entradas.

## Sintaxe
<a name="HLL_SKETCH_ESTIMATE-synopsis"></a>

```
HLL_SKETCH_ESTIMATE (hllsketch_expression)
```

## Argumento
<a name="HLL_SKETCH_ESTIMATE-argument"></a>

 *hllsketch\$1expression*   
Uma `BINARY` expressão contendo um esboço gerado por HLL\$1SKETCH\$1AGG

## Tipo de retorno
<a name="HLL_SKETCH_ESTIMATE-return-type"></a>

A função HLL\$1SKETCH\$1ESTIMATE retorna um valor BIGINT que é a contagem distinta aproximada representada pelo esboço de entrada.

## Exemplos
<a name="HLL_SKETCH_ESTIMATE-examples"></a>

Os exemplos a seguir usam o algoritmo de esboço HyperLogLog (HLL) para estimar a cardinalidade (contagem exclusiva) dos valores na coluna. `col` A `hll_sketch_agg(col, 12)` função pega a `col` coluna e cria um esboço HLL usando uma precisão de 12 bits. O esboço do HLL é uma estrutura de dados aproximada que pode estimar com eficiência o número de elementos exclusivos em um conjunto. A `hll_sketch_estimate()` função pega o esboço HLL criado por `hll_sketch_agg` e estima a cardinalidade (contagem única) dos valores representados pelo esboço. O `FROM VALUES (1), (1), (2), (2), (3) tab(col);` gera um conjunto de dados de teste com 5 linhas, em que a `col` coluna contém os valores 1, 1, 2, 2 e 3. O resultado dessa consulta é a contagem exclusiva estimada dos valores na `col` coluna, que é 3.

```
SELECT hll_sketch_estimate(hll_sketch_agg(col, 12))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3
```

A diferença entre o exemplo a seguir e o anterior é que o parâmetro de precisão (12 bits) não está especificado na chamada da `hll_sketch_agg` função. Nesse caso, a precisão padrão de 14 bits é usada, o que pode fornecer uma estimativa mais precisa para a contagem exclusiva em comparação com o exemplo anterior que usou 12 bits de precisão.

```
SELECT hll_sketch_estimate(hll_sketch_agg(col))
FROM VALUES (1), (1), (2), (2), (3) tab(col);
3
```

# função HLL\$1UNION
<a name="HLL_UNION"></a>

A função HLL\$1UNION combina dois esboços HLL em um único esboço unificado. Ele usa o algoritmo HyperLogLog (HLL) para combinar dois esboços em um único esboço. As consultas podem usar os buffers resultantes para calcular contagens exclusivas aproximadas como números inteiros longos com a função. `hll_sketch_estimate`

## Sintaxe
<a name="HLL_UNION-syntax"></a>

```
HLL_UNION (( expr1, expr2 [, allowDifferentLgConfigK ] ))
```

## Argumento
<a name="HLL_UNION-argument"></a>

 *Exprn*   
Uma `BINARY` expressão contendo um esboço gerado por HLL\$1SKETCH\$1AGG.

*allowDifferentLgConfigK*  
Uma expressão BOOLEAN opcional que controla se é permitido mesclar dois esboços com valores LGConfigK diferentes. O valor padrão é `false`.

## Tipo de retorno
<a name="HLL_UNION-return-type"></a>

A função HLL\$1UNION retorna um buffer BINARY contendo o HyperLogLog esboço calculado como resultado da combinação das expressões de entrada. Quando o `allowDifferentLgConfigK` parâmetro é`true`, o esboço resultante usa o menor dos dois `lgConfigK` valores fornecidos.

## Exemplos
<a name="HLL_UNION-examples"></a>

Os exemplos a seguir usam o algoritmo de esboço HyperLogLog (HLL) para estimar a contagem exclusiva de valores em duas colunas `col1` e em um `col2` conjunto de dados.

 A `hll_sketch_agg(col1)` função cria um esboço HLL para os valores exclusivos na `col1` coluna. 

A `hll_sketch_agg(col2)` função cria um esboço HLL para os valores exclusivos na coluna col2. 

A `hll_union(...)` função combina os dois esboços de HLL criados nas etapas 1 e 2 em um único esboço de HLL unificado.

A `hll_sketch_estimate(...)` função pega o esboço combinado do HLL e estima a contagem exclusiva de valores em ambos e. `col1` `col2`

A `FROM VALUES` cláusula gera um conjunto de dados de teste com 5 linhas, onde `col1` contém os valores 1, 1, 2, 2 e 3 e `col2` contém os valores 4, 4, 5, 5 e 6. 

O resultado dessa consulta é a contagem exclusiva estimada de valores em ambos `col1` e`col2`, que é 6. O algoritmo de esboço HLL fornece uma maneira eficiente de estimar o número de elementos exclusivos, mesmo para grandes conjuntos de dados, sem precisar armazenar o conjunto completo de valores exclusivos. Neste exemplo, a `hll_union` função é usada para combinar os esboços do HLL das duas colunas, o que permite que a contagem exclusiva seja estimada em todo o conjunto de dados, em vez de apenas para cada coluna individualmente.

```
SELECT hll_sketch_estimate(
  hll_union(
    hll_sketch_agg(col1),
    hll_sketch_agg(col2)))
  FROM VALUES
    (1, 4),
    (1, 4),
    (2, 5),
    (2, 5),
    (3, 6) AS tab(col1, col2);
  6
```

A diferença entre o exemplo a seguir e o anterior é que o parâmetro de precisão (12 bits) não está especificado na chamada da `hll_sketch_agg` função. Nesse caso, a precisão padrão de 14 bits é usada, o que pode fornecer uma estimativa mais precisa para a contagem exclusiva em comparação com o exemplo anterior que usou 12 bits de precisão.

```
SELECT hll_sketch_estimate(
  hll_union(
    hll_sketch_agg(col1, 14),
    hll_sketch_agg(col2, 14)))
  FROM VALUES
    (1, 4),
    (1, 4),
    (2, 5),
    (2, 5),
    (3, 6) AS tab(col1, col2);
```

# função HLL\$1UNION\$1AGG
<a name="HLL_UNION_AGG"></a>

A função HLL\$1UNION\$1AGG combina vários esboços HLL em um único esboço unificado. Ele usa o algoritmo HyperLogLog (HLL) para combinar um grupo de esboços em um único. As consultas podem usar os buffers resultantes para calcular contagens exclusivas aproximadas com a função. `hll_sketch_estimate`

## Sintaxe
<a name="HLL_UNION_AGG-syntax"></a>

```
HLL_UNION_AGG ( expr [, allowDifferentLgConfigK ] )
```

## Argumento
<a name="HLL_UNION_AGG-argument"></a>

 *expr*   
Uma `BINARY` expressão contendo um esboço gerado por HLL\$1SKETCH\$1AGG.

*allowDifferentLgConfigK*  
Uma expressão BOOLEAN opcional que controla se é permitido mesclar dois esboços com valores LGConfigK diferentes. O valor padrão é `false`.

## Tipo de retorno
<a name="HLL_UNION_AGG-return-type"></a>

A função HLL\$1UNION\$1AGG retorna um buffer BINARY contendo o HyperLogLog esboço calculado como resultado da combinação das expressões de entrada do mesmo grupo. Quando o `allowDifferentLgConfigK` parâmetro é`true`, o esboço resultante usa o menor dos dois `lgConfigK` valores fornecidos.

## Exemplos
<a name="HLL_UNION_AGG-examples"></a>

Os exemplos a seguir usam o algoritmo de esboço HyperLogLog (HLL) para estimar a contagem exclusiva de valores em vários esboços de HLL.

O primeiro exemplo estima a contagem exclusiva de valores em um conjunto de dados.

```
SELECT hll_sketch_estimate(hll_union_agg(sketch, true))
    FROM (SELECT hll_sketch_agg(col) as sketch
            FROM VALUES (1) AS tab(col)
          UNION ALL
          SELECT hll_sketch_agg(col, 20) as sketch
            FROM VALUES (1) AS tab(col));
  1
```

A consulta interna cria dois esboços de HLL:
+ A primeira instrução SELECT cria um esboço a partir de um único valor de 1. 
+ A segunda instrução SELECT cria um esboço a partir de outro valor único de 1, mas com uma precisão de 20. 

A consulta externa usa a função HLL\$1UNION\$1AGG para combinar os dois esboços em um único esboço. Em seguida, ele aplica a função HLL\$1SKETCH\$1ESTIMATE a esse esboço combinado para estimar a contagem exclusiva de valores.

O resultado dessa consulta é a contagem exclusiva estimada dos valores na `col` coluna, que é`1`. Isso significa que os dois valores de entrada de 1 são considerados exclusivos, mesmo que tenham o mesmo valor.

O segundo exemplo inclui um parâmetro de precisão diferente para a função HLL\$1UNION\$1AGG. Nesse caso, os dois esboços do HLL são criados com uma precisão de 14 bits, o que permite que sejam combinados com sucesso usando o `hll_union_agg` `true` parâmetro.

```
SELECT hll_sketch_estimate(hll_union_agg(sketch, true))
    FROM (SELECT hll_sketch_agg(col, 14) as sketch
            FROM VALUES (1) AS tab(col)
          UNION ALL
          SELECT hll_sketch_agg(col, 14) as sketch
            FROM VALUES (1) AS tab(col));
  1
```

O resultado final da consulta é a contagem exclusiva estimada, que nesse caso também é`1`. Isso significa que os dois valores de entrada de 1 são considerados exclusivos, mesmo que tenham o mesmo valor.