У меня есть таблица примерно так:
# 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. Я знаю, как делать groupby
операции в SparkR или PySpark. Меня интересует только решение Spark SQL здесь.