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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM