【问题标题】:Clickhouse: is there a way to set up sampling on an existing MergeTree that doesnt have a primary key in clickhouse?Clickhouse:有没有办法在 clickhouse 中没有主键的现有 MergeTree 上设置采样?
【发布时间】:2021-10-15 08:33:17
【问题描述】:

我想对我拥有的这张表进行随机抽样,它包含注册用户会话活动的数据。所以有一个用户标识、一个会话标识、时间戳以及其他通用数据。由于它的组织方式,没有一个列是唯一的,因为一个用户可以有多个会话,或者一个会话可以被多个用户访问,等等。

此表中有大约 300M 行,我希望能够对其进行采样。但是,查看文档,看起来我必须设置散列键或采样键,当我的列是唯一的时是否可以这样做?还是可以将其散列到多个列上?

我有一个查询,例如

select * from table order by rand() limit (select toInt32(count(*)/100) from table)

但是运行超过 300M 行要求太高了

【问题讨论】:

    标签: sql sql-like sampling clickhouse


    【解决方案1】:

    可以在多个列上散列

    SELECT cityHash64('axx', 20)
    
    ┌─cityHash64('axx', 20)─┐
    │   6142436227093532237 │
    └───────────────────────┘
    

    采样很难正确实施,请阅读https://kb.altinity.com/altinity-kb-queries-and-syntax/sampling-example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-16
      • 2019-10-22
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 2018-03-11
      • 2021-06-26
      • 2021-08-16
      相关资源
      最近更新 更多