Impala/SQL: выберите подтаблицу и присоединитесь

Я пытаюсь использовать следующий код, чтобы найти данные за последний месяц в таблице_1, а затем соединить их с таблицей_2:

import pandas as pd

query = 'select * from table_1 where table_1.ts > "2016-07-12 00:00:00" as recent_table left join table_2 on table_1.t2__fk=table_2.id' 

cursor = impala_con.cursor()
cursor.execute('USE my_db')
cursor.execute(query)
df_result = as_pandas(cursor)
df_result

но получил ошибку ниже:

HiveServer2Error: AnalysisException: Syntax error in line 1:
...s > "2016-07-10 00:00:00" as recent_table left join table_2...
                             ^
Encountered: AS
Expected: AND, BETWEEN, DIV, GROUP, HAVING, ILIKE, IN, IREGEXP, IS, LIKE, LIMIT, NOT, OFFSET, OR, ORDER, REGEXP, RLIKE, UNION

CAUSED BY: Exception: Syntax error

Кто-нибудь знает, что я здесь пропустил? И как правильно достичь этой цели. Спасибо!


person Edamame    schedule 12.08.2016    source источник


Ответы (1)


Это потому, что синтаксис вашего запроса неверен. Вы не можете использовать псевдоним для условного оператора, как указано ниже. Псевдонимы используются только для имени таблицы и имени столбца.

where table_1.ts > "2016-07-12 00:00:00" as recent_table

Правильный запрос будет

select t1.* 
from table_1 t1
left join table_2 t2 on t1.t2__fk = t2.id
where t1.ts > "2016-07-12 00:00:00";
person Rahul    schedule 12.08.2016
comment
Спасибо. Тогда как мне достичь цели найти подтаблицу, прежде чем присоединиться к другой таблице? - person Edamame; 13.08.2016
comment
@ Эдамаме, ты проверил отредактированный ответ? также включили правильный запрос. - person Rahul; 13.08.2016
comment
что t1 здесь в правильном запросе? или это должно быть table_1? Спасибо! - person Edamame; 13.08.2016
comment
@Edamame, t1 и t2 - это псевдонимы таблиц для лучшей возможности редактирования. да, вы также можете напрямую использовать имя таблицы. - person Rahul; 13.08.2016