Hive: fungsi agregat pada kolom array

Saya bertanya-tanya apakah mungkin untuk menjalankan fungsi agregat pada kolom yang memiliki tipe data array.

Tabel dibuat sebagai berikut:

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 berisi kumpulan tanggal yang dipisahkan koma. Saya ingin mencari tanggal minimum tersebut menggunakan fungsi MIN:

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

Jika MIN tidak berlaku untuk struktur array, apa solusi alternatifnya?

Terima kasih!


person AlessioG    schedule 16.06.2017    source sumber


Jawaban (1)


Cobalah untuk mengurutkan array dan ambil elemen pertama:

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

jika tabel dapat berisi lebih dari satu catatan untuk customer_id maka ambil min(sort_array(start_date)[0])

person leftjoin    schedule 16.06.2017