Pau*_* Wu 8 sql group-by apache-spark udf
我在Spark SQL中有一个查询
select count(ts), truncToHour(ts)
from myTable
group by truncToHour(ts).
Run Code Online (Sandbox Code Playgroud)
哪里ts是时间戳类型,truncToHour是舍去时间戳小时UDF.此查询不起作用.如果我试试,
select count(ts), ts from myTable group by truncToHour(ts)
Run Code Online (Sandbox Code Playgroud)
我有expression 'ts' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() if you don't care which value you get.;,但first()如果我这样做,则没有定义:
select count(ts), first(ts) from myTable group by truncToHour(ts)
Run Code Online (Sandbox Code Playgroud)
无论如何在不使用子查询的情况下得到我想要的东西?另外,为什么它说"包装在first()"但是first()没有定义?
我得到了一个解决方案:
SELECT max(truncHour(ts)), COUNT(ts) FROM myTable GROUP BY truncHour(ts)
Run Code Online (Sandbox Code Playgroud)
或者
SELECT truncHour(max(ts)), count(ts) FROM myTable GROUP BY truncHour(ts)
Run Code Online (Sandbox Code Playgroud)
还有更好的解决办法吗?