Clickhouse:有没有办法在 Clickhouse 中没有主键的现有 MergeTree 上设置采样?
Clickhouse: is there a way to set up sampling on an existing MergeTree that doesnt have a primary key in clickhouse?
我想对这个 table 进行随机抽样,我有,它包含注册用户会话的数据 activity。所以有一个 userid,一个 sessionid,时间戳还有其他一般数据。由于它的组织方式,没有一个列是唯一的,因为一个用户可以有多个会话,或者一个会话可以被多个用户访问,等等。
此 table 中大约有 3 亿行,我希望能够对其进行采样。但是,查看文档,看起来我必须设置一个散列键或采样键,当我的列是唯一的时候可以这样做吗?还是可以将它散列到多个列上?
我有一个查询
select * from table order by rand() limit (select toInt32(count(*)/100) from table)
但是 运行 超过 3 亿行
要求太高了
可以将它散列到多个列上
SELECT cityHash64('axx', 20)
┌─cityHash64('axx', 20)─┐
│ 6142436227093532237 │
└───────────────────────┘
抽样很难正确实施,请阅读本文https://kb.altinity.com/altinity-kb-queries-and-syntax/sampling-example
我想对这个 table 进行随机抽样,我有,它包含注册用户会话的数据 activity。所以有一个 userid,一个 sessionid,时间戳还有其他一般数据。由于它的组织方式,没有一个列是唯一的,因为一个用户可以有多个会话,或者一个会话可以被多个用户访问,等等。
此 table 中大约有 3 亿行,我希望能够对其进行采样。但是,查看文档,看起来我必须设置一个散列键或采样键,当我的列是唯一的时候可以这样做吗?还是可以将它散列到多个列上?
我有一个查询
select * from table order by rand() limit (select toInt32(count(*)/100) from table)
但是 运行 超过 3 亿行
要求太高了可以将它散列到多个列上
SELECT cityHash64('axx', 20)
┌─cityHash64('axx', 20)─┐
│ 6142436227093532237 │
└───────────────────────┘
抽样很难正确实施,请阅读本文https://kb.altinity.com/altinity-kb-queries-and-syntax/sampling-example