Как найти записи за последние 7 дней, используя свиную латынь?

Я новичок в латыни свиней. У меня есть требование найти записи за последние 7 дней из CSV, содержащие данные за последние 4 года.

Может ли кто-нибудь помочь мне понять это.


person user3528221    schedule 13.04.2014    source источник
comment
В каком формате находится ваш столбец/столбцы Date или Timestamp? И вам нужны последние 7 дней на ключ или любой ключ?   -  person alexeipab    schedule 14.04.2014


Ответы (2)


Более общий способ — сравнить каждую строку данных и проверить, старше ли она 7 дней или нет? Для этого нам нужно зафиксировать дату в каждой строке данных. Пусть набор данных представляет собой отношение dataSet с полем столбца в виде даты типа chararray.

В Pig 0.11 вы можете преобразовать поле даты из chararray в тип данных datetime, используя функцию ToDate(), а затем получить разницу между CurrentTime() и датой, используя DaysBetween(), и отфильтровать по ней. Например:

lastSevenDaysRec = FILTER dataSet BY DaysBetween(CurrentTime(), ToDate(date, 'yyyy MM dd')) <= 7

Вы можете проверить следующую документацию для подробного понимания различных функций даты и времени в Свинья на латыни. Также вы можете посмотреть допустимые форматы для использования в функции ToDate.

person addicted20015    schedule 15.04.2014

Предполагая, что ваш набор данных равен A и есть одна строка в день, и у нее есть поле с именем даты, вы можете попробовать что-то похожее на это:

B = GROUP A BY date;
B = ORDER A BY group DESC;
B = LIMIT B BY 7;

И тогда у вас будут записи за последние семь дней, сгруппированные по дате.

person vicsana1    schedule 15.04.2014
comment
Что произойдет, если на каждую дату будет 1000 записей? - person alexeipab; 15.04.2014
comment
Решено. Вам нужна только одна группа в начале. - person vicsana1; 16.04.2014