2016-10-25 4 views
0

私は、ユーザーが豚を使って得た返答の数を計算したいつぶやきがあります。豚:別のフィールド名との結合

私の豚のスクリプトが(と仮定すると、Y1は、必要なJSONを持っている)のようになります。

{"user_id":"9642792"..............."number_of_replies_to_user":1} 
:私はのようなものを期待していたWhereeas

{"y1::user_id":"9642792"............"y4::in_reply_to_user_id_str":"9642792","y4::number_of_replies_to_user":1} 

y2 = GROUP y1 BY in_reply_to_user_id_str; 
y3 = FOREACH y2 GENERATE group AS in_reply_to_user_id_str, COUNT(y1) AS number_of_replies_to_user; 
y4 = FOREACH y3 GENERATE in_reply_to_user_id_str, number_of_replies_to_user; 
y5 = JOIN y1 BY user_id LEFT OUTER, y4 BY in_reply_to_user_id_str; 
STORE y5 INTO '$DATA_OUTPUT' USING JsonStorage() 

、私の出力は次のようになります

エイリアス名y1y5は使用しません。質問に答える必要がない不要なフィールドを削除しました。これは読みやすくするためです。

どうすればいいですか?私の豚のバージョン(0.15)は$0..をサポートしていません。

また、この値を計算する良い方法はありますか? SQLは非常に単純ですが、Pigは本当に混乱しています。

答えて

0

Y5から必要なフィールドを生成し、その結果Y6関係

y5 = JOIN y1 BY user_id LEFT OUTER, y4 BY in_reply_to_user_id_str; 
y6 = FOREACH y5 GENERATE y1::$0,y1::$1,y1::$2,..........y4::$0,y4::$1; 
STORE y6 INTO '$DATA_OUTPUT' USING JsonStorage(); 
+0

を格納するための追加のステップを追加し、それをテストしていないが、userid' AS 'Y1 ::ユーザーIDのようなものを期待します。この回答のコードは、フィールド名をどのように指定する必要がありますか? –

関連する問題