Hive: агрегатная функция для столбца массива

Мне было интересно, можно ли запустить агрегатную функцию для столбца с массивом типов данных.

Таблица создается следующим образом:

CREATE EXTERNAL TABLE tmp_table (
  start_date array<string>,
  customer_id string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  LOCATION '<my-s3-bucket>'

start_date содержит набор дат, разделенных запятыми. Я хочу найти минимум этих дат, используя функцию MIN:

SELECT customer_id, MIN(start_date) FROM tmp_table GROUP BY customer_id

Если MIN неприменим к структуре массива, каким может быть альтернативное решение?

Спасибо!


person AlessioG    schedule 16.06.2017    source источник


Ответы (1)


Попробуйте отсортировать массив и взять первый элемент:

select customer_id, sort_array(start_date)[0] as min_start_date
  from tmp_table;

если таблица может содержать более одной записи для customer_id, возьмите min(sort_array(start_date)[0])

person leftjoin    schedule 16.06.2017