Почему это не работает в Hiveql?
create table hist (
id int,
state int,
create_date string);
insert into hist values (1, 1, '2017-01-01');
insert into hist values (1, 1, '2017-02-01');
insert into hist values (1, 1, '2017-03-01');
insert into hist values (1, 2, '2017-02-01');
insert into hist values (1, 2, '2017-03-01');
insert into hist values (1, 2, '2017-04-01');
WITH MonthEnd as
(select to_date(trunc(add_months(current_date, -1), 'MM'))
MonthEndDate)
SELECT date_add(MAX(a.create_date), 0)
FROM hist a, monthend me
where a.create_date <=
(select max(b.create_date) from hist b
where a.id=b.id and b.state=2
and b.create_date < me.MonthEndDate) x
and a.state=1 and a.create_date < me.MonthEndDate;
Я бы ожидал ответа '2017-03-01', но вместо этого я получаю:
Error while compiling statement: FAILED: ParseException line 20:24 cannot recognize input near 'select' 'max' '(' in expression specification
Примечание: я выделяю нижний оператор выбора в Hue перед его выполнением.Оператор select находится в строках 13-17.После запроса на выбор есть другой закомментированный код.Поэтому я понятия не имею, почему он говорит, что ошибка компиляции находится в строке 20.
Единственный вопрос StackOverflow, который я нашел рядом с этим рекомендуемым, я называю подзапросом.Вот почему я добавил «х» после него.Это не помогло.Та же ошибка.
Подзапрос сам по себе работает:
WITH MonthEnd as
(select to_date(trunc(add_months(current_date, -1), 'MM'))
MonthEndDate)
select max(b.create_date) from hist b, monthend me
where b.state=2 and b.create_date < me.MonthEndDate;
2017-04-01
Заранее благодарен за любую информацию, которую кто-либо может дать здесь!