TPC Benchmark DS (TPC-DS) (находится в репозитории hive-testbench) - это эталонный тест, позволяющий тестировать производительность запросов Hive. Многие запросы в этом хранилище показывают, на что способен Hive. Одним из запросов в репозитории TPC-DS является запрос, который вызывает предложение HAVING и сравнивает его (>) с подзапросом (который является оператором выбора)
select 'web' channel, i_brand_id,i_class_id,i_category_id, sum(ws_quantity*ws_list_price) sales , count(*) number_sales
from web_sales
,item
,date_dim
where ws_item_sk in (select ss_item_sk from cross_items)
and ws_item_sk = i_item_sk
and ws_sold_date_sk = d_date_sk
and d_year = 1998+2
and d_moy = 11
group by i_brand_id,i_class_id,i_category_id
having sum(ws_quantity*ws_list_price) > (select average_sales from avg_sales)
Когда я пытаюсь скопировать эту функциональность с примером, содержащим оператор HAVING, агрегат и компаратор, сравнивающий агрегат с подзапросом, на который жалуется компилятор.
SELECT sum(c) FROM table_name GROUP BY a HAVING sum(c) > (SELECT a from another_table WHERE c=26)
Ошибка, возвращенная из моего примера запроса:
FAILED: ParseException line 1:55 cannot recognize input near '(' 'SELECT' 'a' in expression specification
Поддерживается ли это только в Hive 3 ( Я работаю в Hive 2.2.0 )? Кажется, я не могу найти никаких документов по Confluence, явно заявляющих это
Спасибо