Todos os produtos
Search
Central de documentação

Realtime Compute for Apache Flink:APPROX_COUNT_DISTINCT

Última atualização: Jun 27, 2026

A função APPROX_COUNT_DISTINCT retorna uma contagem aproximada de valores distintos em uma coluna. Ela troca uma pequena parcela configurável de precisão por uma sobrecarga de estado significativamente menor no nó de agregação, o que a torna ideal para cenários de alta cardinalidade, como a contagem de visitantes únicos (UV), quando não é necessária uma contagem exata.

Requisito de versão: Ververica Runtime (VVR) 3.0.0 ou posterior.

Quando usar

Use APPROX_COUNT_DISTINCT em vez de COUNT DISTINCT quando as duas condições abaixo forem verdadeiras:

  • A coluna tem um grande número de chaves distintas (por exemplo, IDs de usuário, tokens de sessão, URLs). A função não oferece benefícios significativos de desempenho para colunas de baixa cardinalidade.

  • O fluxo de entrada não contém mensagens de retração.

Se alguma dessas condições não for atendida, use COUNT DISTINCT.

Como funciona

Para gerar um resultado exato, COUNT DISTINCT precisa armazenar cada chave distinta nos dados de estado. Em colunas de alta cardinalidade, isso gera sobrecarga significativa de leitura e escrita e se torna um gargalo de desempenho.

APPROX_COUNT_DISTINCT estima a contagem de valores distintos sem armazenar todas as chaves. Essa abordagem elimina o gargalo de estado e permite as otimizações miniBatch e local-global no nó de agregação.

O parâmetro accuracy controla a precisão do cálculo. Um valor maior indica maior precisão, mas também aumenta a sobrecarga de estado e reduz a vantagem de desempenho em relação a COUNT DISTINCT.

Sintaxe

APPROX_COUNT_DISTINCT(col [, accuracy])

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

col

Todos os tipos de dados

Sim

Coluna na qual contar os valores distintos.

accuracy

FLOAT

Não

Precisão do cálculo. Valores válidos: (0.0, 1.0). Padrão: 0.99. Valores mais altos aumentam a precisão, porém elevam a sobrecarga de estado e diminuem a vantagem de desempenho sobre COUNT DISTINCT.

Exemplo

O exemplo a seguir compara os resultados obtidos com a precisão padrão (0.99) e com uma precisão menor (0.9).

Tabela de entrada T1

a (VARCHAR)

b (BIGINT)

Hi

1

Hi

2

Hi

3

Hi

4

Hi

5

Hi

6

Hello

1

Hello

2

Hello

3

Hello

4

Consulta

SELECT
  a,
  APPROX_COUNT_DISTINCT(b) AS b,
  APPROX_COUNT_DISTINCT(b, 0.9) AS c
FROM T1
GROUP BY a;

Resultados

a (VARCHAR)

b (BIGINT)

c (BIGINT)

Hi

6

6

Hello

4

4

A coluna b usa a precisão padrão de 0.99; a coluna c usa 0.9.