Как рассчитать дату окончания недели в улье, используя субботу в качестве даты окончания недели?

У меня был сценарий, в котором я хотел рассчитать дату окончания недели (с учетом даты), учитывая, что неделя заканчивается в субботу. Я прочитал некоторые ответы, но не смог найти решение, поэтому я публикую свой подход здесь. Надеюсь, это поможет кому-то вроде меня.

select 
TransactionDateTime,
from_unixtime(unix_timestamp(TransactionTime),'u') as wkday,
date_add (TransactionDateTime,
case when from_unixtime(unix_timestamp(TransactionTime),'u')=7 then 6 
when from_unixtime(unix_timestamp(TransactionTime),'u')=1 then 5
when from_unixtime(unix_timestamp(TransactionTime),'u')=2 then 4
when from_unixtime(unix_timestamp(TransactionTime),'u')=3 then 3
when from_unixtime(unix_timestamp(TransactionTime),'u')=4 then 2
when from_unixtime(unix_timestamp(TransactionTime),'u')=5 then 1
when from_unixtime(unix_timestamp(TransactionTime),'u')=6 then 0
end) as UsageWkEndDt
from TransTable;

person Gaurav Khare    schedule 03.03.2016    source источник
comment
Пожалуйста, удалите свой ответ   -  person    schedule 03.03.2016
comment
Вы не приводите пример фактического формата ввода и не приводите пример ожидаемого результата, например. учитывая строку '2016-03-03 21:05', указывающую на четверг, я ожидаю строку '2016-03-05', то есть следующую или равную субботу   -  person Samson Scharfrichter    schedule 03.03.2016
comment
И вы не указываете версию Hive - начиная с V1.2.0 у вас есть встроенная функция next_day(string start_date, string day_of_week) cf. cwiki.apache.org/confluence/display/Hive/   -  person Samson Scharfrichter    schedule 03.03.2016
comment
Что касается вашего сомнения относительно ожидаемого формата даты - здесь будет принят стандартный формат даты и времени (гггг-ММ-дд чч:мм:сс) или даже стандартная дата (гггг-ММ-дд). Если у нас есть какой-то другой формат, мы можем легко справиться с этим, используя метод unix_timestamp в улье. Этот подход хорош для Hive 1.0.0, так как эта версия поддерживается в последнем выпуске EMR (emr-4.3.0).   -  person Gaurav Khare    schedule 04.03.2016