2017-03-22 14 views
6

Tôi cần các giá trị chuỗi concat hàng khôn ngoan với dấu '~' làm dấu phân cách. tôi có các dữ liệu sau:Kết hợp nhiều hàng với dấu phân cách trong hive

enter image description here

tôi cần phải concat cột 'Comment' cho mỗi 'id' theo thứ tự tăng dần của 'row_id' với '~' như delimiter.

sản lượng dự kiến ​​như sau:

enter image description here

GROUP_CONCAT không phải là một lựa chọn từ trước đến nay không được công nhận trong phiên bản Hive của tôi. Tôi có thể sử dụng collect_set hoặc collect_list, nhưng tôi sẽ không thể chèn dấu phân tách ở giữa.

Có công việc nào xung quanh không?

+0

Hãy thay thế những hình ảnh với văn bản. –

+1

Bạn đã cố gắng sử dụng các chức năng concat do Hive cung cấp? Kiểm tra liên kết này: - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF –

+0

Có tôi đã thử tất cả các chức năng concat nhất định. tất cả chúng đều cho các hoạt động khôn ngoan của cột. Tôi đang tìm hàng hoạt động khôn ngoan – Vaishak

Trả lời

6

collect_list trả về mảng chứ không phải chuỗi.
Mảng có thể được chuyển đổi thành chuỗi được phân tách bằng cách sử dụng concat_ws.


Điều này sẽ hoạt động, không có thứ tự nhận xét cụ thể.

select  id 
      ,concat_ws('~',collect_list(comment)) as comments 

from  mytable 

group by id 
; 

+----+-------------+ 
| id | comments | 
+----+-------------+ 
| 1 | ABC~PRQ~XYZ | 
| 2 | LMN~OPQ  | 
+----+-------------+ 
Các vấn đề liên quan