前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在clickhouse中实现连续的时间,比如连续的天

如何在clickhouse中实现连续的时间,比如连续的天

作者头像
公众号-利志分享
发布2022-04-25 09:23:44
2.2K0
发布2022-04-25 09:23:44
举报
文章被收录于专栏:利志分享

在我们的业务中如果按照天去查询数据结果,服务端返回数据可能会出现某些天没数据,这样就会出现输出前端某些天可能没有的情况,然后这样看数据就可能出现视觉差错,体验不好。所以我们一般情况下要么通过sql来实现连续的时间查询,比如连续的天,要么通过程序处理时间,然后再循环数据按照某一天匹配之后返回结果给前端。

下面我们这里分享一下在clickhouse中如何实现连续的时间:连续的天

我们在clickhouse中实现连续的时间首先要学习一下range,arrayMap,arrayJoin这三个函数的使用。

代码语言:javascript
复制
range
语法:
range([start, ] end [, step])
start:起始值
end:结束值
step:步长
案例:从5开始到10结束,步长为2的值得输出:
执行命令:select range(5,10,2)
输出结果:
┌─range(5, 10, 2)─┐
│ [5,7,9]         │
└─────────────────┘
代码语言:javascript
复制
arrayMap
语法:
arrayMap(func, arr1, …)
func:函数的执行方式,一般表示arr1里面值按照什么标准执行
arr1:数组
案例:求第一个数组的2倍,第二个数组的5倍
执行命令:select arrayMap((x,y)->(x*2,y*5),[1,34],[8,5])
输出结果:
┌─arrayMap(lambda(tuple(x, y), tuple(multiply(x, 2), multiply(y, 5))), [1, 34], [8, 5])─┐
│ [(2,40),(68,25)]                                                                      │
└───────────────────────────────────────────────────────────────────────────────────────┘
代码语言:javascript
复制
arrayJoin
语法:
arrayJoin(arr1)
arr1:数组
案例:把数组[1,2,4]变成三列
输出命令:select arrayJoin([1,2,4])
输出结果:
┌─arrayJoin([1, 2, 4])─┐
│                    1 │
│                    2 │
│                    4 │
└──────────────────────┘

好了上面三个函数已经给大家分享了一遍,下面我们直接看下如何实现连续的天

实现2021.1.1到2021.1.10连续的时间,我们首先需要用range把数组自增,然后通过arrayMap转换成对应的时间,然后通过arrayJoin进行转换成列。下面我们看下结果:

执行命令:

代码语言:javascript
复制
select arrayJoin(arrayMap(x -> toDate(x), range(toUInt32(toDate('2021-01-01')),toUInt32(toDate('2021-01-10')) + 1))) day;

结果如下:

代码语言:javascript
复制
┌────────day─┐
│ 2021-01-01 │
│ 2021-01-02 │
│ 2021-01-03 │
│ 2021-01-04 │
│ 2021-01-05 │
│ 2021-01-06 │
│ 2021-01-07 │
│ 2021-01-08 │
│ 2021-01-09 │
│ 2021-01-10 │
└────────────┘

总结:学习clickhouse的高阶函数使用对分析数据特别有用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 利志分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档