如何解决使用 Clickhouse 计算跳出率
我正在尝试将 Clickhouse 用于我的一个小型分析应用程序,并且我有一个将原始点击记录为:
CREATE TABLE hits (
sessionId LowCardinality(String),page LowCardinality(String),timestamp DateTime,projectId UInt16
) ENGINE = MergeTree() PARTITION BY toYYYYMM(timestamp)
ORDER BY (projectId,page,toStartOfHour(timestamp)) --
SETTINGS index_granularity = 8192;
之后我可以添加一些示例数据:
sessionId page timestamp projectId
xxx / 2021-03-12 13:51:12 1
yyy / 2021-03-12 13:51:12 1
xxx /cool 2021-03-12 13:52:12 1
fff / 2021-03-12 13:53:12 1
我想要实现的是计算每页的反弹(唯一 sessionId 发生)和浏览量,例如:
page bounces views projectId
/ 2 3 1
/cool 0 1 1
我可以轻松计算每页的浏览次数,但由于 sessionId
子句,唯一的 GROUP BY
计数失败:
SELECT page,projectId,count(*) as views,count(disTINCT sessionId) as bounces --fail
from hits
GROUP BY (page,projectId);
任何有关更改 Clickhouse 架构或什至使用 Clickhouse 的一些引擎进行聚合的想法、解决方法都将受到高度赞赏。
解决方法
select projectId,p[1] page,countIf(length(p)=1) bounce
from (
SELECT
projectId,sessionId,groupArray( page ) p
from hits
GROUP BY sessionId,projectId )
group by projectId,page
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。