2016-11-15 3 views
-1

Я хочу иметь сценарий свинью для фильтрации строк на различных условиях:Свиньи: строки фильтра условия

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); 

То есть я собирала все, что выше среднего в каждом аспекте, как top, все, что ниже среднего каждый аспект как bottom.

Теперь я хочу, чтобы получить оставшиеся строки (то есть все смешалось, то есть несколько аспектов, выше среднего и несколько ниже среднего) после фильтрации top и bot в другой псевдоним называется 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

'Input (s): Успешно чтения 165 записи (362590 байт) из: "/ пользователь/alenza/Virtua/marketanalysis/данные/результаты/analysis_name/tweets_combined/пользователь"' 'Выход (ы): Успешно сохранено 0 записей (815 байт) в: "/ tmp/inf_med" Успешно сохранено 1 запись (163 байта) в: "/ tmp/inf_top" Успешно сохранено 113 записей (18068 байт) в: "/ tmp/inf_bot" ' – kskp

+0

Он читал 165 записей, но написал только 114 записей. – kskp

Смежные вопросы