2016-10-26 2 views
0
I 돼지 2 필드의 조합의 빈도를 계산할

의 카운트 주파수 : 위에서돼지 : 여러 열

------ y1 has the fields ----- 
a1 = GROUP y1 BY (user_id, tweet_created_at); 
a2 = FOREACH a1 GENERATE group AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user; 
a3 = FOREACH a2 GENERATE user_id, tweet_created_at, number_of_replies_by_user; 
a4 = JOIN y1 BY (user_id, tweet_created_at) LEFT OUTER, a3 BY (user_id, tweet_created_at); 

, 난 (user_id, tweet_created_at) 필드 조합의 빈도를 계산할. 내가 괄호없이 시도 Incompatable schema: left is "user_id:NULL,tweet_created_at:NULL", right is "group:tuple(user_id:bytearray,tweet_created_at:bytearray)"

: a2 = FOREACH a1 GENERATE group AS user_id, tweet_created_at, COUNT(y1) AS number_of_replies_by_user;

내가 다른 오류 얻을 :

라인 a2 = FOREACH a1 GENERATE group AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user; 오류 제공

Invalid field projection. Projected field [tweet_created_at] does not exist in schema:.................. 

인가를 그 구문 오류 또는 내 데이터에 문제가 ? 구문 오류 일 경우 올바른 방법은 무엇입니까?

간략히 : 게시 된 모든 트윗이 올 때 사용자가 응답 한 횟수를 계산하고 싶습니다 (그가 같은 날에 2 개의 트윗을 올리면, 그는 트윗이 처음 올 때는 10, 2 번째가되었을 때는 15). 내가 tweet_created_at으로 그룹화하지 않으면 추측 횟수가 항상 잘못된 상수가 될 것입니다. 그룹에

답변

2

사용 FLATTEN는 필드 근무

a2 = FOREACH a1 GENERATE FLATTEN(group) AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user; 
+0

에 튜플을 unnest합니다. 감사! – kskp