2016-06-29 1 views
0

SQL (Redshift) 쿼리를 실행해야하며 현재 jupyter/ipython 노트북으로 작업하고 있습니다. 나는 sqlalchemy-redshift를 가지고있다. 'extra_ctx'는 JSON 문자열을 포함하는 적색 편이 테이블의 열이다sqlalchemy에서 'json_extract_path_text'(적색 변이)를 사용할 수 없습니까?

from sqlalchemy import create_engine, text 
engine_string = databasepwrd.redshiftconnection() 
engine = create_engine(engine_string) 
from pandas.io import sql 

def run_query(sequalese): 
    '''returns a dataframe given a string SQL query''' 
    sql_query = text(sequalese) 
    df = sql.read_sql(sql_query,engine) 
    return df 

run_query(""" 
SELECT deviceid, json_extract_path_text({extra_ctx, 'skip_login'}) 
FROM table 
LIMIT 10""") 

.

SQL Workbench를 통해 직접 데이터베이스를 쿼리 할 때 실행되기 때문에 쿼리가 작동한다는 것을 알고 있습니다. extra_ctx의 'E'로 그리고 조금^포인트 -

'ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near "extra_ctx" 
LINE 1: SELECT user, json_extract_path_text({extra_ctx, 'skip_lo...' 

< : 내 노트북에 그것을 실행하려고하면, 나는 오류가 발생합니다.

문제의 원인에 대한 아이디어가 있으십니까? 어떤 도움을 주셔서 감사합니다.

+0

SQL에서 [함수] (http://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_PATH_TEXT.html)를 어떻게 호출하는지 확인하면 구문 오류가 발생합니다. 첫 번째 인수로 json 값 * from_json * (예 : 열)을 전달하고 * path_elems *와 같은 가변 텍스트 값을 전달해야합니다. 귀하의 현재 유일한 인수는 유효한 SQL조차도 아닙니다. 즉, 중괄호를 제거하십시오. –

+0

빠른 답변 주셔서 감사합니다. 네 말이 맞아, 분명히 나는 ​​{}이 필요 없어. 나는 문서를 잘못 읽었을 것입니다 - 고맙습니다. – drxtrz

답변

0

구문 오류. {필요하지 않습니다. SQL workbench에서 오류를 발생시키지 않지만 Python을 실행할 때 오류가 발생합니다.

SELECT deviceid, json_extract_path_text(extra_ctx, 'skip_login') 
FROM table 
LIMIT 10 

잘 처리되었습니다. 감사합니다, Ilja

관련 문제