zoukankan      html  css  js  c++  java
  • ClickHouse亿点抽样展示


    数据准备

        数据源 (点数据使用之前导入的数据120038310条,https://juejin.cn/post/6903100159484395534)

     CREATE TABLE default.points
    (
        `id` UInt32,
        `Lon` Float32,
        `Lat` Float32
    )
    ENGINE = MergeTree()
    ORDER BY (intHash64(id), Lon, Lat)
    SAMPLE BY intHash64(id)
    SETTINGS index_granularity = 8192
    insert into points SELECT id,Lon,Lat FROM pnts
    

    采样功能和Hash函数

    SAMPLE 子句特点

    该 SAMPLE 子句允许近似于 SELECT 查询处理。

    启用数据采样时,不会对所有数据执行查询,而只对特定部分数据(样本)执行查询。 例如,如果您需要计算所有访问的统计信息,只需对所有访问的1/10分数执行查询,然后将结果乘以10即可。

    近似查询处理在以下情况下可能很有用:

    当你有严格的时间需求(如<100ms),但你不能通过额外的硬件资源来满足他们的成本。
    当您的原始数据不准确时,所以近似不会明显降低质量。
    业务需求的目标是近似结果(为了成本效益,或者向高级用户推销确切结果)。

        Hash函数intHash64可以用于将元素不可逆的伪随机打乱。经过测试一亿多个点得抽样性能比较满意,可以为页面提供比较满意得展示。注意事项:sample的字段必须是int类型,必须在主键或者排序中。

    抽样sql,0.01为示例,可根据实际修改

    SELECT id,Lon,Lat FROM points SAMPLE 0.01
    

    增加服务端和网页

        使用Express作为服务端,请求数据并且在网页中使用Maptalks展示,本地测试

    参考资料:

    https://clickhouse.tech/docs/zh/sql-reference/functions/hash-functions/#md5

    https://clickhouse.tech/docs/zh/sql-reference/statements/select/sample/

  • 相关阅读:
    关于学习方法
    ES6的异步操作
    Promise对象的基本用法
    Generator函数(三)
    Generator函数(二)
    Generator函数(一)
    ES6 Set结构和Map结构(上)
    mybatis02--增删改查
    myBatis01
    监听器
  • 原文地址:https://www.cnblogs.com/polong/p/14244773.html
Copyright © 2011-2022 走看看