Ich muss eine SQL (Redshift) -Abfrage ausführen, und ich arbeite derzeit mit einem Jupyter/Ipython-Notebook. Ich habe sqlalchemy-redshift.Kann 'json_extract_path_text' (Redshift) nicht mit sqlalchemy verwendet werden?
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""")
Wo extra_ctx 'eine Spalte in der Rotverschiebung Tabelle, die json Strings enthält.
Ich kenne meine Abfrage funktioniert, weil es läuft, wenn ich unsere Datenbank direkt über SQL Workbench abfragen. Wenn ich versuche, es in meinem Notebook zu laufen, erhalte ich die Fehlermeldung:
'ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near "extra_ctx"
LINE 1: SELECT user, json_extract_path_text({extra_ctx, 'skip_lo...'
< - und ein wenig^verweist auf die ‚e‘ auf extra_ctx.
Alle Ideen, was das Problem verursacht werden könnte? Danke für jede Hilfe.
Überprüfen Sie, wie Sie die [Funktion] (http://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_PATH_TEXT.html) in SQL aufrufen, der Syntaxfehler ist genau richtig. Sie sollten einen Json-Wert * from_json * (zum Beispiel eine Spalte) als erstes Argument und variadische Textwerte als * path_elems * übergeben. Ihr aktuelles und einziges Argument ist nicht einmal gültiges SQL. Mit anderen Worten, entfernen Sie die geschweiften Klammern. –
Vielen Dank für Ihre schnelle Antwort. Du hast Recht, anscheinend brauchte ich das {} nicht. Ich muss die Dokumente falsch gelesen haben - danke. – drxtrz