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