• clickhouse中SummingMergeTree


    clickhouse中SummingMergeTree
    SummingMergeTree适用于只要统计结果数据的汇总层数据,要求是统计的维度不变
    我们在对汇总条件明确的情况下,统计数据,在ClickHouse中如何解决呢?最直接的方案就是使用MergeTree存储数据,然后通过GROUP BY聚合查询,并利用 SUM聚合函数汇总结果。这种方案存在两个问题。
    存在额外的存储开销:终端用户不会查询任何明细数据,只关心汇总结果,所以不应该一直保存所有的明细数据。
    存在额外的查询开销:终端用户只关心汇总结果,虽然MergeTree性能强大,但是每次查询都进行实时聚合计算也是一种性能消耗。
    所以有了SummingMergeTree诞生
    特点:
    不指定合并字段ENGINE = SummingMergeTree() ,因为MergeTree是根据order by 尽情排序的,在分组内(默认就是order by字段)将数值类型的数据求和,如果有分区的情况下,在分区内是根据order by的字段当做分组(group by字段)进行分组,将数值类型的字段求和,对于非数值类型的取一条
    指定合并字段ENGINE = SummingMergeTree(sal) 在分区内,根据order by 字段分组,对指定的字段sal值进行求和
    其他符合类型的暂不介绍
    小姐:SummingMergeTree使用ORDER BY排序键作为聚合数据的依据
    只有在合并分区时才会触发汇总逻辑
    聚合只会发生在同分区内,不同分区的数据不会发生聚合
    如果SummingMergeTree((col1,col2,…))指定了字段,只会聚合指定字段,如果没有指定,会对所有非ORDER BY字段以外的数值字段进行聚合
    汇总会对聚合的数值类型字段进行sum,对非聚合类型字段或者是非数值类型字段会取相同key分区的第一条
    支持嵌套结构,但列字段名必须以Map为后缀结尾,任何名称以Key 、id、Type为后缀结尾的字段,都将和ORDER BEY指定的聚合字段组合成一个复合的key,进行聚合

  • 相关阅读:
    代码复现: VoxelNet论文和代码解析 pytorch版本(二) Dataloader.py
    这一秒,困扰了程序员50年
    Kotlin的作用域函数 let、also、with、run、apply
    文件包含漏洞
    Python数据可视化基础:使用Matplotlib绘制图表
    8句极易踩中买家雷点的口头禅,你中了哪几条?
    QT--MP3项目数据库数据表设计与实现_歌曲搜索
    【1282. 用户分组】
    5G+北斗:人员定位系统为化工厂定位赋能
    MySQL的事务使用
  • 原文地址:https://blog.csdn.net/weixin_51473488/article/details/132548987