Получите разницу во времени в минутах или секундах в spark sql - PullRequest
1 голос
/ 15 июня 2019

У меня есть таблица примерно так:

# 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 здесь.

...