Categorias:

Funções de agregação (Estimativa de frequência) , Funções de janela

APPROX_TOP_K

Usa Space-Saving para retornar uma aproximação dos valores mais frequentes na entrada, junto com suas frequências aproximadas.

A saída é uma matriz JSON de matrizes. Nas matrizes internas, a primeira entrada é um valor na entrada, e a segunda entrada corresponde a sua frequência estimada na entrada. A matriz externa contém itens k, ordenados por frequência descendente.

Para obter mais informações sobre APPROX_TOP_K, consulte Estimativa de valores frequentes.

Consulte também:

APPROX_TOP_K_ACCUMULATE , APPROX_TOP_K_COMBINE, APPROX_TOP_K_ESTIMATE

Sintaxe

Função de agregação

APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] )
Copy

Função de janela

APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] ) OVER ( [ PARTITION BY <expr4> ] )
Copy

Argumentos

  • expr: a expressão (por exemplo, nome da coluna) para a qual você quer encontrar os valores mais comuns.

  • k: o número de valores cujas contagens você quer aproximadas. Por exemplo, se você quiser ver os 10 valores mais comuns, então defina k como 10.

    Se k for omitido, o padrão é 1.

    O valor máximo é 100000 (100.000), e é automaticamente reduzido se os itens não couberem na saída.

  • counters: este é o número máximo de valores distintos que podem ser rastreados de cada vez durante o processo de estimativa. Por exemplo, se counters estiver definido como 100000, então o algoritmo rastreia 100.000 valores distintos, tentando manter os 100.000 valores mais frequentes.

    O número máximo de counters é 100000 (100.000).

expr4

Esta é a expressão opcional usada para agrupar linhas em partições.

Notas de uso

  • A aproximação é mais precisa se o número de counters for grande, portanto na maioria dos casos counters deve ser consideravelmente maior do que k. (Cada contador utiliza apenas uma pequena quantidade de memória, portanto, aumentar o número de contadores não é caro em termos de memória).

  • Quando usado como uma função de janela:

    • Esta função não oferece suporte para:

      • Subcláusula ORDER BY na cláusula OVER().

      • Quadros de janela.

Exemplos

SELECT APPROX_TOP_K(C4) FROM lineitem;

--------------------+
 APPROX_TOP_K(C4,3) |
--------------------|
 [                  |
   [                |
     1,             |
     124923         |
   ],               |
   [                |
     2,             |
     107093         |
   ],               |
   [                |
     3,             |
     89315          |
   ]                |
 ]                  |
--------------------+
Copy
WITH states AS (
  SELECT approx_top_k(C4, 3, 5) AS state
  FROM lineitem
)
SELECT value[0]::INT AS value, value[1]::INT AS frequency
FROM states, LATERAL FLATTEN(state);

-------+-----------+
 VALUE | FREQUENCY |
-------+-----------|
     1 |    124923 |
     2 |    107093 |
     3 |     89438 |
-------+-----------+
Copy