2016-06-23 2 views
0

The ниже улья команды,Hive TimeStamp для еженедельных и квартальных данных

select * from my_new_table 
    where month(time_stamp)= '03' 
    and year(time_stamp) = '2016' 
    and age = '1' 
    and gender = '0' 
    and income = '4' 
    and ethnicity = '3' 
    and marital_status = '1'; 

генерирует следующие результаты для всех данных (31 дней) в течение месяца марта (03) 2016:

time_stamp    age gender income ethnicity marital_status 
[email protected]:42:47.000 1 0  4  3   1 
[email protected]:10:51.000 1 0  4  3   1 
[email protected]:16:44.000 1 0  4  3   1 
[email protected]:13:51.000 1 0  4  3   1 
[email protected]7:12:51.000 1 0  4  3   1 
[email protected]:24:51.000 1 0  4  3   1 
[email protected]:02:06.000 1 0  4  3   1 

Аналогичным образом, я хочу получить данные за 2-й квартал 2016 года (или n-й квартал, данные должны поступать в течение 3 месяцев, начиная с 1 марта по 31 мая за этот квартал) и 12-й недели (или на неделю, данные должны поступать в течение 7 дней для этой конкретной недели) 2016. Какая правильная команда Hive для этого?

Я получаю сообщение об ошибке, если я заменил month на quarter или week в команде Hive.

select * from my_new_table 
where quarter(time_stamp)='03' 
and year(time_stamp) = '2016'; 

возвращает

FAILED: SemanticException [Error 10011]: Line 1:71 Invalid function 'quarter' 

и

select * from my_new_table 
where week(time_stamp)='12' 
and year(time_stamp) = '2016'; 

возвращает

FAILED: SemanticException [Error 10011]: Line 1:71 Invalid function 'week' 

похоже, что должен быть расчет включены в получении п-й квартал или неделю, но не уверен, , Пожалуйста помоги. Благодарю.

+0

Это может помочь, если вы продемонстрируете команды, которые вы пробовали, и определенные ошибки, которые были сгенерированы. [Функции даты в улье] (http://www.folkstalk.com/2011/11/date-functions-in-hive.html) могут быть информативными. – showdev

+0

выберите * from my_new_table где quarter (time_stamp) = '03' и year (time_stamp) = '2016'; FAILED: SemanticException [Ошибка 10011]: Строка 1:71 Недопустимая функция 'quarter' выберите * from my_new_table где week (time_stamp) = '12' и year (time_stamp) = '2016'; FAILED: SemanticException [Ошибка 10011]: Строка 1:71 Недействительная функция 'неделя' – Murali

ответ

0

В документации указано, что функции month и week ожидают «ввод строки», а не фактическую дату или временную метку в качестве входных данных. Вы, возможно, потребуется использовать функцию date_format, чтобы преобразовать метку в строку, а затем использовать функции, такие как

month(date_format(timestamp, 'yyyy-MM-dd')) 

это не объясняет, почему ваш первый пример этих функций как часть, где положение похоже на работу , Однако.