2016-11-15 7 views
-1

私は別の条件で行をフィルタリングするために豚のスクリプトを持って欲しい:豚:フィルタ行条件

私は topとしてあらゆる面で平均を上回っているすべてのものを選んでいますされ
i2 = GROUP i1 ALL; 

i3 = FOREACH i2 GENERATE AVG(i1.user_followers_count) AS avg_user_followers_count, AVG(i1.avl_user_total_retweets) AS avg_avl_user_total_retweets, AVG(i1.avl_user_total_likes) AS avg_avl_user_total_likes, AVG(i1.avl_user_total_replies) AS avg_avl_user_total_replies, AVG(i1.avl_user_engagements) AS avg_avl_user_engagements; 

top = FILTER i1 BY (user_followers_count > i3.avg_user_followers_count) AND (avl_user_engagements > i3.avg_avl_user_engagements) AND (avl_user_total_retweets > i3.avg_avl_user_total_retweets) AND (avl_user_total_likes > i3.avg_avl_user_total_likes) AND (avl_user_total_replies > i3.avl_user_total_replies); 

bot = FILTER i1 BY (user_followers_count < i3.avg_user_followers_count) AND (avl_user_engagements < i3.avg_avl_user_engagements) AND (avl_user_total_retweets < i3.avg_avl_user_total_retweets) AND (avl_user_total_likes < i3.avg_avl_user_total_likes) AND (avl_user_total_replies < i3.avl_user_total_replies); 

、平均を下回っているすべてのものすべての側面はbottomです。

topbotを別の別名medにフィルタリングした後、残りの行(すべてが混在している、つまり平均以上で平均以下のもの)を取得します。それ、どうやったら出来るの?

答えて

0

使用SPLIT

SPLIT i1 INTO 
    top IF((user_followers_count > i3.avg_user_followers_count) AND (avl_user_engagements > i3.avg_avl_user_engagements) AND (avl_user_total_retweets > i3.avg_avl_user_total_retweets) AND (avl_user_total_likes > i3.avg_avl_user_total_likes) AND (avl_user_total_replies > i3.avl_user_total_replies)), 
    bot IF((user_followers_count < i3.avg_user_followers_count) AND (avl_user_engagements < i3.avg_avl_user_engagements) AND (avl_user_total_retweets < i3.avg_avl_user_total_retweets) AND (avl_user_total_likes < i3.avg_avl_user_total_likes) AND (avl_user_total_replies < i3.avl_user_total_replies)), 
    med OTHERWISE; 
+0

おかげで、 'OTHERWISE'が正しい構文であるかどうかわかりません。私はこのコードを使用すると失われたレコードをいくつか持っています。 – kskp

+0

'入力(S): "/ユーザ/ alenza /バーチャ/ marketanalysis /データ/結果/ analysis_name/tweets_combined /ユーザ"' '出力(S): が正常から165のレコード(362590バイト)を読み取ります"/ tmp/inf_med" "/ tmp/inf_top"に1レコード(163バイト)を格納しました "/ tmp/inf_bot"に113レコード(18068バイト)を正常に格納しました。 ' – kskp

+0

これは165件のレコードを読んでいますが、114件のレコードしか書いていません。 – kskp