Presto SQL按小时分组统计impression_id报错求助
修复后的Presto SQL及错误说明
错误分析
你的SQL存在4个关键问题:
- 别名使用单引号:Presto中标识符(列别名)不能用单引号包裹,单引号仅用于字符串常量,需改用双引号或直接省略引号(若别名是合法标识符)。
- COUNT函数语法错误:
COUNT(impression_id,0)不符合Presto的COUNT函数语法,COUNT仅接受一个参数(或*),无需额外传0。 - 日期截断逻辑错误:
CAST(date_time AS date)会将带时间的字段转为纯日期,丢失小时维度,直接使用原date_time字段做date_trunc即可。 - GROUP BY字段错误:
group by date_trunc('hour', date)中的date是不存在的字段,需与SELECT中的日期表达式保持一致。
修复后的SQL
SELECT date_trunc('hour', date_time) AS hour_time, COUNT(impression_id) AS impression_count FROM parquet_db.imp_pixel GROUP BY date_trunc('hour', date_time)
补充说明
date_trunc('hour', date_time)会将date_time截断到小时级别(例如2022-08-27 07:05:48变为2022-08-27 07:00:00)。COUNT(impression_id)会统计非空的impression_id数量,若要统计所有行数(包括impression_id为空的情况),可改用COUNT(*)。- 别名
hour_time和impression_count是为了更清晰区分原字段,你也可以根据需求调整,比如把hour_time改回date_time(无需引号)。
内容的提问来源于stack exchange,提问作者vizeetor
相关产品推荐
相关产品推荐

