【问题标题】:Clickhouse topK query on several columnsClickhouse topK 查询多列
【发布时间】:2020-03-23 06:22:52
【问题描述】:

在ClickHouse中,有没有办法在超过列上使用topK查询,

例如:

select topK(10)(AGE,COUNTRY) ...

意思是我想要AGE+COUNTRY的top10组合, 我只发现在字段上使用 concat 并在它们上使用 topK 的解决方法,想知道是否还有其他方法。

【问题讨论】:

    标签: olap clickhouse


    【解决方案1】:

    您可以将列的数组(或元组)传递给topK

    SELECT topK(10)([Age, Country])
    FROM table
    

    或者使用简单的计算(它会慢得多,但可以提供准确的结果):

    SELECT
        Age,
        Country
    FROM table
    GROUP BY
        Age,
        Country
    ORDER BY count() DESC
    LIMIT 10
    

    【讨论】:

    • 谢谢弗拉基米尔,
    • 谢谢弗拉基米尔 我专门寻找 topK 解决方案的原因是因为它的性能似乎比 count+order by 好得多,当使用少数 CH 实例时,是不是因为 count 会导致整个数据从服务器改组到协调器?
    • 没问题,很高兴为您提供帮助。我添加的第二个查询只是为了提供信息,它的工作速度很慢,但给出了准确的结果。第一个查询是推荐的方式 - 它是最快的但不提供保证结果(参见描述here)。
    猜你喜欢
    • 2020-03-29
    • 2017-08-19
    • 2018-12-20
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2020-05-19
    • 2019-10-04
    • 2019-07-14
    相关资源
    最近更新 更多