0
SQL(Redshift)クエリを実行する必要があり、現在jupyter/ipythonノートブックで作業しています。私はsqlalchemy-redshiftを持っています。sqlalchemyで 'json_extract_path_text'(Redshift)を使用できませんか?
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""")
ここで 'extra_ctx'は、json文字列を含むredshiftテーブルの列です。
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...'
<:私は私のノートにそれを実行しようとすると、私はエラーが表示されます。
問題の原因となる考え方について教えてください。助けてくれてありがとう。
SQLで[関数](http://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_PATH_TEXT.html)をどのように呼び出しているかを確認すると、構文エラーが発生します。あなたは最初の引数としてjson値* from_json *(例えば列)を渡し、* path_elems *のような可変的なテキスト値を渡すことになっています。現在の唯一の引数は有効なSQLでさえありません。つまり、中括弧を削除します。 –
すぐにお返事ありがとうございます。あなたは正しいです、明らかに私は{}は必要ありませんでした。私はドキュメントを誤読しているに違いない - ありがとう。 – drxtrz