如何创建 TOP N 最频繁值的 Clickhouse 物化视图

How to create a Clickhouse materialized view of TOP N most frequent values

我有大量 table 的 DNS 请求,并且想报告一段时间内查询最频繁的域。例如,一年中每 5 分钟请求一次前 20 个域。

传统的 SQL 查询可以 GROUP BY/count()/ORDER BY/LIMIT BY。但是我每个月摄取数十亿行并且只能将源数据保留几天。我想创建一个物化视图来随着时间的推移保留报告数据。也许是 SummingMergeTree。

toStartOfHour(Timestamp), domain, count

但我只想保留最频繁的(而不是 5 分钟块中的数百万个其他域)。如何在物化视图 SELECT 中只汇总最频繁的域?据我了解,select在每个INSERTS块上只有运行,这可能与整体数据的频率不同。

这看起来应该是一件容易的事。我是否漏掉了一些明显的东西?

谢谢。

This seems like it should be an easy thing to do.

除非这是不可能的。

我会使用 SELECT 而不是预先聚合的 Mat.Vie + cron / 每小时 -> dashboard_results_table