clickhouse 多维分析函数

前言

clickhouse的强大之处在于充分利用内存计算的高效性从而快速得到计算结果,尤其是对于一些需要做聚合分析、统计等场景下,clickhouse提供了一些按维度分析的函数,本文将介绍clickhouse常用的几类多维分析函数。

groupby函数

还记得在mysql中,使用sql语句进行groupby的场景吧,即对查询结果按照某个字段,或者多个字段进行分组汇聚,具有相同业务场景的数据被分到同一个组中;

在clickhouse中,也提供了groupby的功能,不过clickhouse的groupby提供了更丰富的视角,即维度对查询结果进行分组,主要包括:

  • with rollup【上卷】;
  • with cube【多维分析】;
  • with total【统计总数】;

rollup

rollup也叫上卷,举例来说,在A表中,其中有a,b两个字段,根据字段的有序性进行group by,比如像下面这样,那么在clickhouse中即成为上卷;

group by a

group by a,b

cube

rollup也叫多维分析,仍然以A表为例,group by的字段如果进行排列组合可以得出很多种结果,比如:

group by a

group by a,b

group by b

group by b,a

案例实操

1、创建一张数据表

create table t_order_mt1(
 id UInt32,
 sku_id String,
 total_amount Decimal(16,2),
 create_time Datetime
) engine =MergeTree
 partition by toYYYYMMDD(create_time)
 primary key (id)
 order by (id,sku_id);

2、插入一批数据

insert into t_order_mt1 values
(101,'sku_001',1000.00,'2022-09-01 12:00:00'),
(101,'sku_002',2000.00,'2022-09-01 12:00:00'),
(103,'sku_004',2500.00,'2022-09-01 12:00:00'),
(104,'sku_002',2000.00,'2022-09-01 12:00:00'),
(105,'sku_003',600.00,'2022-09-02 12:00:00'),
(106,'sku_001',1000.00,'2022-09-04 12:00:00'),
(107,'sku_002',2000.00,'2022-09-04 12:00:00'),
(108,'sku_004',2500.00,'2022-09-04 12:00:00'),
(109,'sku_002',2000.00,'2022-09-04 12:00:00'),
(110,'sku_003',600.00,'2022-09-01 12:00:00');

 

3、使用从右至左去掉维度进行小计

 select id , sku_id,sum(total_amount) from t_order_mt1 group by id,sku_id with rollup

4、从右至左去掉维度进行小计,再从左至右去掉维度进行小计 

select id , sku_id,sum(total_amount) from t_order_mt group by id,sku_id with cube;

从展示的结果来看,即按照id和sku_id两个字段的不同的组合,得到了各种组合下的统计结果

5、with totals: 只计算合计

select id , sku_id,sum(total_amount) from t_order_mt group by id,sku_id with totals;


http://www.niftyadmin.cn/n/10403.html

相关文章

win11的文件属性默认显示全部,Windows11右键菜单修改为Win10模式的方法(手把手详细操作)

win11的文件属性默认显示全部,Windows11右键菜单修改为Win10模式的方法(手把手详细操作) 文章目录win11的文件属性默认显示全部,Windows11右键菜单修改为Win10模式的方法(手把手详细操作)Tips 1 先以管理员…

广通远驰亮相2022 C-V2X“四跨”(苏州)应用示范活动

2022年11月3-4日,2022 C-V2X“四跨”(苏州)先导应用示范活动在苏州举办,9家国内外整车企业、22家终端企业、9家芯片模组企业、7家信息安全企业共计23个车队、47家单位参与活动演示。 深圳市广通远驰科技有限公司(以下简…

什么是CRM系统?为什么现代企业都在使用?

如今市场竞争日益激烈,不少企业管理者通过各种方式,试图寻找一个合适并有效的解决方案,以此来帮助他们解决企业管理各种难题,让企业业绩不断提高,获得持续的成功。 而企业管理软件的出现填补了企业管理领域的空缺。从…

【BOOST C++ 16 语言扩展】(1) Boost.Coroutine

一、说明语言扩展 以下库扩展了编程语言 C。 Boost.Coroutine 使得在 C 中使用协程成为可能——其他编程语言通常通过关键字 yield 支持。Boost.Foreach 提供了一个基于范围的 for 循环,它是在 C11 中添加到语言中的。Boost.Parameter 允许您以名称/值对的形式并以…

呼叫中心中间件(mod_cti基于FreeSWITCH)-升级说明

mod_cti升级记录 1.3.9 添加了外地手机自动零功能 添加cdr入库成功通知功能 1.3.8 2022年11月2日发布 添加了新的打断模式添加了讯飞对话接口 1.3.7 2022年9月22日发布 话术引擎执行步骤推送到redis添加附加变量支持httpflow添加重试请求支持 1.3.6 2022年8月28日发布 ht…

UNCTF2022 writeup

题量太多了,比赛结束之后又要做一遍… 注:最后给出的均为题目解出的flag,提交时需将格式修改为UNCTF{} 文章目录Web我太喜欢bilibili大学啦ezgame签到babyphpeasy_upload给你一刀我太喜欢bilibili大学啦修复版302与深大随便注PwnwelcomeUNCT…

感兴趣区域提取算子

threshold阈值处理提亮区域 connection 区域打散 fill_up 填充打散区域 select_shape 选择符合条件区域 模板匹配创建时也需要先进行感兴趣区域创建 blob 边缘提取 几何测量 模板匹配 blob 二值化图像分割 Blob分析(Blob Analysis)是对图像中相同像…

vue 项目在加载完成之前,显示预置加载动画

vue 项目在加载完成之前,显示预置加载动画 自己有一个日记项目,由于服务器带宽很小1MB,在加载之前页面中显示是空白的,就想给它加个前置的动画,这个用户体验更好。 一、实现 1. 定义项目入口 如果你是 pwa 应用&am…