首页 > 解决方案 > 获取 ClickHouse 表前 n 行的校验和(cityHash64)

问题描述

根据https://clickhouse.tech/docs/en/sql-reference/functions/hash-functions/,我可以通过这种方式获得整个表的校验和:

SELECT groupBitXor(cityHash64(*)) FROM table

获取表的前 N ​​行校验和的最准确方法是什么?

例如,我正在使用带有 GenerateRandom 引擎的表,如此所述。

CREATE TABLE test (name String, value UInt32) ENGINE = GenerateRandom(1, 5, 3)

我尝试使用 LIMIT 子句,但还没有运气。

标签: clickhouse

解决方案


考虑使用子查询:

SELECT groupBitXor(cityHash64(*)) 
FROM (
  SELECT *
  FROM table
  LIMIT x)

SELECT groupBitXor(cityHash64(*))
FROM 
(
    SELECT *
    FROM system.numbers
    LIMIT 10
)

/*
┌─groupBitXor(cityHash64(number))─┐
│             9791317254842948406 │
└─────────────────────────────────┘
*/

推荐阅读