sql - Snowflake SQL 列出每小时的会话计数(按天和小时分组)
问题描述
我正在尝试从用户事务的雪花表中计算唯一会话令牌/小时。尽管我按日期和小时执行计数不同和分组,但我每天只得到一个结果记录。
我的查询是:
select to_date(EVENT_TIMESTAMP) as SessDate,
date_part(hour, current_timestamp()) as SessHour,
count(distinct event_data:"u-token") as userTokenCount
from
APPTRANSACTIONTABLE
where
event_timestamp BETWEEN '2020-03-12T00:00:00.00' AND '2020-03-14T23:59:59.59'
group by SessHour, SessDate
order by SessHour, SessDate
解决方案
您datepart()
的时间戳错误(current_timestamp
而不是EVENT_TIMESTAMP
):
select to_date(EVENT_TIMESTAMP) as SessDate,
date_part(hour, EVENT_TIMESTAMP) as SessHour,
count(distinct event_data:"u-token") as userTokenCount
from APPTRANSACTIONTABLE
where event_timestamp BETWEEN '2020-03-12T00:00:00.00' AND '2020-03-14T23:59:59.59'
group by SessHour, SessDate
order by SessHour, SessDate;
我还建议将WHERE
条款更简单地写为:
where event_timestamp >= '2020-03-12' AND
event_timestamp < '2020-03-15'
没有理由过滤掉午夜前一秒发生的事件。您还可以使用date_trunc()
进一步简化:
select date_trunc('hour', EVENT_TIMESTAMP) as session_day_hour,
count(distinct event_data:"u-token") as userTokenCount
from APPTRANSACTIONTABLE
where event_timestamp >= '2020-03-12' AND
event_timestamp < '2020-03-15'
group by session_day_hour
order by session_day_hour;
推荐阅读
- python - pandas 中的 scatter_matrix 返回大量文本 - 如何删除它?
- notifications - PWA 通知
- angular - 是否可以设置
来自打字稿Angular 5的文本颜色 - python - 我无法理解,为什么只有 delete_node 不起作用
- android - 当应用程序在后台运行时调用 onMessage 方法
- c# - 如何在 Angular 中实现区域
- c# - Unity Number 向导返回按钮
- c# - 将 Unity 画布保存为 PNG 文件
- angular - ngClass 仅在使用 ngFor Angular5 时切换特定元素
- javascript - 当滑块被选中和未选中时