Есть ли способ подсчета отдельных случаев события в год? - PullRequest
0 голосов
/ 09 июля 2019

Я работаю над Apache Pig, чтобы получить представление о работе с большими базами данных.Конкретная проблема заключается в том, что мне нужно подсчитать количество дней в году для всех лет, перечисленных в наборе данных, когда температура в записанной области была записана выше 80 градусов.

Данные настроены вследующим образом.Дата Макс. Темп

1919-06-03, 36

1919-11-26, 91

1927-09-23, 61

Это повторяетсякаждый день в течение примерно 200 лет.

В настоящее время я знаю, что для того, чтобы сделать это более управляемым, я буду использовать функцию разделения, чтобы разделить набор данных на основе температуры, превышающей 80 градусов.

    SPLIT data INTO max_above_95 if max_t > 80;

Я также подумал, что если вы можете получить год от даты, вы можете сгруппировать, разделив, чтобы получить ожидаемые результаты и подсчитать.Я, однако, не смог найти метод, который использовал бы годовой фрагмент даты.

Мне нужно это в конечных выходных данных, указывающих каждый год, и число вхождений за этот год, например, следующее:

(1993, 21)

(1994, 7)

(1995, 13)

1 Ответ

0 голосов
/ 09 июля 2019

Используйте FILTER, а затем извлекайте год, группируйте по годам, подсчитывайте вхождения.

B = FILTER A BY (A.max_t > 80);
C = FOREACH B GENERATE B.Date,GetYear(B.Date) as Year,max_t;
D = GROUP C BY Year;
E = FOREACH D GENERATE FLATTEN(group) as Year,COUNT(C.max_t);
DUMP E; 
...