Можно ли сравнить оператор HAVING с подзапросом (Hive)? - PullRequest
0 голосов
/ 05 апреля 2019

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, явно заявляющих это

Спасибо

...