#hive #hiveql
Вопрос:
Я создаю запрос в hive, чтобы создать измерение времени, которое выберет дату с 2010-01-01 по текущую дату и отобразит год, квартал, год_среза(дата -7) и отсечение квартала(дата — 7)
Запрос:
with dates as ( select date_add("2010-01-01", a.pos) as d from (select posexplode(split(repeat("o", datediff(from_unixtime(unix_timestamp()), "2010-01-01")), "o"))) a) select d as date_today,year(d) as year,CONCAT('Q',(INT((MONTH(d)-1)/3) 1)) AS QUARTER,YEAR(date_add(d, -7)) AS year_cutoff, CONCAT('Q',(INT((MONTH(date_add(d, -7))-1)/3) 1)) AS QUARTER_cutoff,trunc(add_months(d,-(month(d)-1)%3),'MM') as Firstday_quarter from dates
Результат:
| date_today | year | quarter | year_cutoff | quarter_cutoff | Firstday_quarter ---------- | ----- | ------ | ------------ | ---------- | ---------- |2010-01-01 | 2010 | Q1 | 2009 | Q4 | 2010-01-01 |2010-01-02 | 2010 | Q1 | 2009 | Q4 | 2010-01-01 |2010-01-03 | 2010 | Q1 | 2009 | Q4 | 2010-01-01
Мне нужно рассчитать еще 3 столбца,таких как quarter_last_date,Firstday_quartercutoff, last_date_quarter_cutoff, из которых я вычислил firstday_quarter Не могли бы вы, пожалуйста, сообщить мне, как я могу получить остальные 3 столбца с помощью hive
Экс:
дата сегодня | Первый День_квартала | Последний День_квартала | Первый День_квартального отсечения | Последний День_квартального отсечения |
---|---|---|---|---|
2010-01-07 | 2010-01-01 | 2010-03-31 | 2009-10-01 | 2009-12-31 |