Snowflake SQL 列出每小时会话计数(按天和小时分组)
Snowflake SQL listing session counts per hour (group by day and hour)
我正在尝试从用户交易的 Snowflake table 中计算唯一会话 tokens/hour。
尽管我按日期和小时执行不同的计数和分组,但我每天只得到一个结果记录。
我的查询是:
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;
我正在尝试从用户交易的 Snowflake table 中计算唯一会话 tokens/hour。 尽管我按日期和小时执行不同的计数和分组,但我每天只得到一个结果记录。
我的查询是:
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;