Hãy nói rằng tôi có một tập hợp dữ liệu đánh giá nhà hàng:Tôi có thể tạo các túi lồng nhau bằng cách sử dụng các câu lệnh FOREACH lồng nhau trong Pig Latin không?
User,City,Restaurant,Rating
Jim,New York,Mecurials,3
Jim,New York,Whapme,4.5
Jim,London,Pint Size,2
Lisa,London,Pint Size,4
Lisa,London,Rabbit Whole,3.5
Và tôi muốn tạo ra một danh sách bằng cách sử dụng và thành phố của bộ lọc trung bình. I E. đầu ra:
User,City,AverageRating
Jim,New York,3.75
Jim,London,2
Lisa,London,3.75
tôi có thể viết một kịch bản Pig như sau:
Data = LOAD 'data.txt' USING PigStorage(',') AS (
user:chararray, city:chararray, restaurant:charray, rating:float
);
PerUserCity = GROUP Data BY (user, city);
ResultSet = FOREACH PerUserCity {
GENERATE group.user, group.city, AVG(Data.rating);
}
Tuy nhiên tôi tò mò liệu tôi có thể nhóm đầu tiên nhóm cao cấp (người sử dụng) và nhóm sau đó phụ cấp độ tiếp theo (thành phố) sau: tức là
PerUser = GROUP Data BY user;
Intermediate = FOREACH PerUser {
B = GROUP Data BY city;
GENERATE group AS user, B;
}
tôi nhận được:
Error during parsing.
Invalid alias: GROUP in {
group: chararray,
Data: {
user: chararray,
city: chararray,
restaurant: chararray,
rating: float
}
}
Có ai đã thử điều này với thành công không? Đơn giản là không thể GROUP trong một FOREACH?
Mục tiêu của tôi là để làm một cái gì đó như:
ResultSet = FOREACH PerUser {
FOREACH City {
GENERATE user, city, AVG(City.rating)
}
}
liên kết đã phá vỡ con người –