2016-10-26 18 views
0

私は豚に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); 

、Iは(user_id, tweet_created_at)フィールドの組合せの頻度を計算します。

ラインa2 = FOREACH a1 GENERATE group AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user;はエラーを与える: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;

は、私は別のエラーが表示されます。

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

にタプルをネスト解除します。ありがとう! – kskp