Python Connector を使用すると、Snowflakeにクエリを実行できます。
import snowflake.connector
# Gets the version
ctx = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
authenticator='https://XXXX.okta.com',
)
ctx.cursor().execute('USE warehouse MY_WH')
ctx.cursor().execute('USE MYDB.MYSCHEMA')
query = '''
select * from MYDB.MYSCHEMA.MYTABLE
LIMIT 10;
'''
cur = ctx.cursor().execute(query)
結果はsnowflake.connector.cursor.SnowflakeCursor
。どうすればpandas DataFrameに変換できますか?
DataFrame.from_records()
または pandas.read_sql()
を snowflake-sqlalchemy とともに使用できます。 snowflake-alchemyオプションのAPIがシンプルになりました
_pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])
_
sQLの結果から取得した適切な列名を持つDataFrameを返します。 iter(cur)
はカーソルをイテレータに変換し、_cur.description
_は列の名前と型を提供します。
したがって、完全なコードは
_import snowflake.connector
import pandas as pd
# Gets the version
ctx = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
authenticator='https://XXXX.okta.com',
)
ctx.cursor().execute('USE warehouse MY_WH')
ctx.cursor().execute('USE MYDB.MYSCHEMA')
query = '''
select * from MYDB.MYSCHEMA.MYTABLE
LIMIT 10;
'''
cur = ctx.cursor().execute(query)
df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])
_
_pandas.read_sql
_を使用したい場合は、
_import pandas as pd
from sqlalchemy import create_engine
from snowflake.sqlalchemy import URL
url = URL(
account = 'xxxx',
user = 'xxxx',
password = 'xxxx',
database = 'xxx',
schema = 'xxxx',
warehouse = 'xxx',
role='xxxxx',
authenticator='https://xxxxx.okta.com',
)
engine = create_engine(url)
connection = engine.connect()
query = '''
select * from MYDB.MYSCHEMA.MYTABLE
LIMIT 10;
'''
df = pd.read_sql(query, connection)
_