Tôi có một thức ăn chăn nuôi theo định dạng sau:Nhóm của nhiều lĩnh vực và sản lượng tuple
Hour Key ID Value
1 K1 001 3
1 K1 002 2
2 K1 005 4
1 K2 002 1
2 K2 003 5
2 K2 004 6
và tôi muốn vào nhóm thức ăn bởi (Hour, Key)
sau đó tổng hợp các Value
nhưng giữ ID
như một tuple:
({1, K1}, {001, 002}, 5)
({2, K1}, {005}, 4)
({1, K2}, {002}, 1)
({2, K2}, {003, 004}, 11)
Tôi biết cách sử dụng FLATTEN
để tạo tổng của Value
nhưng không biết cách xuất ID
làm bộ tuple. Đây là những gì tôi có cho đến thời điểm này:
A = LOAD 'data' AS (Hour:chararray, Key:chararray, ID:chararray, Value:int);
B = GROUP A BY (Hour, Key);
C = FOREACH B GENERATE
FLATTEN(group) AS (Hour, Key),
SUM(A.Value) AS Value
;
Bạn có giải thích cách thực hiện việc này không? Cảm kích điều đó!
bạn có thể cung cấp trạng thái cuối cùng/đầu ra bạn đang tìm kiếm - không chắc chắn tôi hiểu những gì bạn có ý nghĩa bởi "ID đầu ra như một tuple" –
@ Chris, trạng thái cuối cùng sẽ là bằng cách nào đó giống như mảnh tôi đã ở trên : '(Giờ, Khóa)' làm khóa, tất cả các 'ID (s)' liên kết của nó giống như trong một bộ dữ liệu (như '{001, 002}', v.v.) cộng với tổng của 'Giá trị'. Xin vui lòng cho tôi biết nếu nó có ý nghĩa. Cảm ơn! – Rock