我有一张像这样的桌子:
# Sample table
building | date | start_time | end_time
-----------------------------------------------------------------
A | 2019-01-01 | 2019-01-01 08:30:42 | 2019-01-01 08:30:50
A | 2019-01-01 | 2019-01-01 09:20:52 | 2019-01-01 09:20:56
A | 2019-01-02 | 2019-01-02 10:21:12 | 2019-01-02 10:21:20
B | 2019-01-01 | 2019-01-01 06:53:22 | 2019-01-01 06:53:27
B | 2019-01-02 | 2019-01-02 07:56:36 | 2019-01-02 07:56:41
B | 2019-01-02 | 2019-01-02 08:45:08 | 2019-01-02 08:45:15
我想获取start_time
和end_time
之间的时差,以秒为单位,按building
和date
分组。以下使用date_diff
的代码可在Athena或Presto中使用,但不适用于Spark SQL。 Spark SQL中有没有办法做到这一点?
# Works in Athena or Presto but not Spark SQL
select
building,
date,
avg(date_diff('minute', start_time, end_time)) as length
from schema.table
group by 1, 2
# Outcome in Athena or Presto
building | date | length
---------------------------------------
A | 2019-01-01 | 6
A | 2019-01-02 | 8
B | 2019-01-01 | 5
B | 2019-01-02 | 6
P.S。我知道如何在SparkR或PySpark中执行groupby
操作。我只对这里的Spark SQL解决方案感兴趣。