2015-07-05 4 views
1

Я пытаюсь запустить этот запрос на улей. Я получаю ошибку FAILED: ParseException line 1:83 Не удалось распознать предикат 'a1'. Не удалось правило: «kwInner» в присоединиться к спецификатор типаSQL/Hive table alias

SELECT 
     a1.a_date, 
     b1.cli_n, 
     a1.a_app, 
     sum(a1.rp_time) 
FROM 
     table_1 a1, 
     table_2 b1 
WHERE 
     a1.a_app = b1.a_app 
     AND a1.a_date >= '2015-05-01' 
     AND a1.a_env IN ('a', 'b') 
     AND a1.raw_data like '%abc%' 
     AND a1.a_ser NOT LIKE '%fgh%' 
GROUP BY 
     a1.a_date, 
     b1.cli_n, 
     a1.a_app 

Я думаю, что он не в состоянии разобрать раздел «FROM table_1 a1». Могу ли я запросить помощь по поводу того, почему HIVE отклоняет этот запрос?

+0

'И a1.a_env IN ('а, 'Ъ')' RU отсутствует ''' 'здесь и a1.a_env IN ('а', 'б')' или type error – Sachu

+0

Я предполагаю, что имена в вашем вопросе - это только примеры, а не настоящие имена. Возможно, у вас есть зарезервированное имя как псевдоним. см. этот биг-лист о той же проблеме и, возможно, изменить псевдоним вашей таблицы. https://issues.apache.org/jira/plugins/servlet/mobile%23issue/HIVE-10294 – bish

ответ

3

Если ваша версия улья < 0.13.0, вы должны использовать JOIN и ON, а не Comma и WHERE. Поэтому ниже должно работать:

SELECT 
     a1.a_date, 
     b1.cli_n, 
     a1.a_app, 
     sum(a1.rp_time) 
FROM 
     table_1 a1 
     LEFT OUTER JOIN 
     table_2 b1 
     ON 
     (
     a1.a_app = b1.a_app 
     AND a1.a_date >= '2015-05-01' 
     AND a1.a_env IN ('a', 'b') 
     AND a1.raw_data like '%abc%' 
     AND a1.a_ser NOT LIKE '%fgh%' 
     ) 
GROUP BY 
     a1.a_date, 
     b1.cli_n, 
     a1.a_app 
+0

Это работает для меня. Спасибо за предложение. –