mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-29 05:00:47 +00:00
37 lines
1.7 KiB
Markdown
37 lines
1.7 KiB
Markdown
|
---
|
|||
|
toc_priority: 108
|
|||
|
---
|
|||
|
|
|||
|
# topK {#topk}
|
|||
|
|
|||
|
Возвращает массив наиболее часто встречающихся значений в указанном столбце. Результирующий массив упорядочен по убыванию частоты значения (не по самим значениям).
|
|||
|
|
|||
|
Реализует [Filtered Space-Saving](http://www.l2f.inesc-id.pt/~fmmb/wiki/uploads/Work/misnis.ref0a.pdf) алгоритм для анализа TopK, на основе reduce-and-combine алгоритма из методики [Parallel Space Saving](https://arxiv.org/pdf/1401.0702.pdf).
|
|||
|
|
|||
|
``` sql
|
|||
|
topK(N)(column)
|
|||
|
```
|
|||
|
|
|||
|
Функция не дает гарантированного результата. В некоторых ситуациях могут возникать ошибки, и функция возвращает частые, но не наиболее частые значения.
|
|||
|
|
|||
|
Рекомендуем использовать значения `N < 10`, при больших `N` снижается производительность. Максимально возможное значение `N = 65536`.
|
|||
|
|
|||
|
**Аргументы**
|
|||
|
|
|||
|
- ‘N’ - Количество значений.
|
|||
|
- ‘x’ – Столбец.
|
|||
|
|
|||
|
**Пример**
|
|||
|
|
|||
|
Возьмём набор данных [OnTime](../../../getting-started/example-datasets/ontime.md) и выберем 3 наиболее часто встречающихся значения в столбце `AirlineID`.
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT topK(3)(AirlineID) AS res
|
|||
|
FROM ontime
|
|||
|
```
|
|||
|
|
|||
|
``` text
|
|||
|
┌─res─────────────────┐
|
|||
|
│ [19393,19790,19805] │
|
|||
|
└─────────────────────┘
|
|||
|
```
|