我有一个事件表,其中包含created\u at(datetime)、userid(string)、eventid(string)列。这里userid可以是重复的,而eventid总是唯一的uuid。
我正在寻找建立两个唯一和非唯一的频率直方图。
这是基于给定的三个输入的eventid和userid
开始日期时间
结束日期时间和
间隔(1分钟,1小时,1天,7天,1个月)。
在这里,bucket将由(end\u datetime-start\u datetime)/interval决定。
输出包括开始日期时间、结束日期时间和频率。对于任何间隔,如果数据不可用,则会出现start\u datetime和end\u datetime,但频率为0。
如何为此构建通用查询?
我查看了直方图函数,但找不到任何相关文档。在尝试时,我无法理解输入和输出之间的关系。
2条答案
按热度按时间dfuffjeb1#
count(distinct XXX)
已弃用。更有用
uniq(XXX)
或者uniqExact(XXX)
o0lyfsai2#
我用跟踪来工作。在这里,tostartofmonth可以更改为ch中的其他类似函数。
和
但在事件表中,toyyyymm(timestamp)是分区,toyyyyymmdd(timestamp)是排序依据,每月超过20亿条记录的性能非常低。
distinct count查询需要大于30gb的空间和30秒的时间。但没有完成。
而常规计数查询需要10-20秒才能完成。