Snowflake Python APIs ์ ์ฌ์ฉํ์ฌ Snowflake์ ์ฐ๊ฒฐยถ
Snowflake Python APIs ์ผ๋ก ์์
์ ์ํํ๋ ค๋ฉด ๋จผ์ Snowflake์ ๋ํ ์ฐ๊ฒฐ์ ์ ์ํด์ผ ํฉ๋๋ค. ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ฉด API์์ ๋ชจ๋ธ๋งํ ๋ฆฌ์์ค์ ์ก์ธ์คํ๊ธฐ ์ํ Root
์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ์์ฑ ์ง์ ํ๊ธฐยถ
๋ค์ ๋ฉ์ปค๋์ฆ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Snowflake์ ๋ํ ์ฐ๊ฒฐ์ ์ ์ํ ์ ์์ต๋๋ค.
Python ์ฌ์ ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ๊ธฐยถ
Python ์ฌ์ ์ ์ฌ์ฉํ์ฌ Snowflake์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐํ ๋ ์ด ์ฌ์ ์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ํจ์๋ ๋ฉ์๋์ ๋ํ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค.
import os
CONNECTION_PARAMETERS = {
"account": os.environ["snowflake_account_demo"],
"user": os.environ["snowflake_user_demo"],
"password": os.environ["snowflake_password_demo"],
"role": "test_role",
"database": "test_database",
"warehouse": "test_warehouse",
"schema": "test_schema",
}
๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ๊ธฐยถ
TOML ๊ตฌ์ฑ ํ์ผ ์์ ์ฐ๊ฒฐ ์ ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋์์ Snowflake์ ๋ํ ์ฐ๊ฒฐ์ ๋ช ์์ ์ผ๋ก ์ ์ํ ํ์๊ฐ ์์ต๋๋ค.
TOML ๊ตฌ์ฑ ํ์ผ์ ๋ํ ๊ธฐ๋ณธ ์ค์ ์ Snowsight ์์ ์์ฑํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ํด๋ผ์ด์ธํธ, ๋๋ผ์ด๋ฒ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์๋ ํํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ Snowflake์ ์ฐ๊ฒฐํ๋๋ก ๊ตฌ์ฑํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ฐ๊ฒฐ ์ค์ ์ ์๋์ผ๋ก ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ~/.snowflake/connections.toml
์ ์๋ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํ๊ณ ๋ค์๊ณผ ์ ์ฌํ ์ฐ๊ฒฐ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
[myconnection]
account = "test-account"
user = "test_user"
password = "******"
role = "test_role"
warehouse = "test_warehouse"
database = "test_database"
schema = "test_schema"
์ด ์์ ์์๋ ๊ณ์ test-account
, ์ฌ์ฉ์ test_user
, ๋น๋ฐ๋ฒํธ ์๊ฒฉ์ฆ๋ช
๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด๋ก ์ด๋ฆ์ด myconnection
์ธ Snowflake ์ฐ๊ฒฐ์ ์ ์ํฉ๋๋ค.
์ฐธ๊ณ
๋ฐ์ค์ account
์ค์ ์์ ์ง์๋์ง ์์ต๋๋ค. ๊ณ์ ์๋ณ์ ์ ๋ฐ์ค์ด ํฌํจ๋์ด ์์ผ๋ฉด ๋์๋ก ๋ฐ๊พธ์ญ์์ค. ์์ธํ ๋ด์ฉ์ ์กฐ์ง์ ๊ณ์ ์ด๋ฆ ์น์
์ ์ฐธ์กฐํ์ญ์์ค.
์ฐ๊ฒฐ ์ ์๋ Snowflake Python ์ปค๋ฅํฐ ์์ ์ ๊ณต๋๋ ๊ฒ๊ณผ ๋์ผํ ๊ตฌ์ฑ ์ต์ ์ ์ง์ํฉ๋๋ค.
Root
์ค๋ธ์ ํธ ์ฐ๊ฒฐ ๋ฐ ์์ฑํ๊ธฐยถ
์ง์ ํ ์ฐ๊ฒฐ ์์ฑ์ ์ฌ์ฉํ์ฌ Snowflake์ ๋ํ ์ฐ๊ฒฐ์ ์์ฑํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ์ ํตํด API ์ฌ์ฉ์ ์์ํ Snowflake Python APIs Root
์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ค์ ์ค๋ธ์ ํธ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
Snowpark Session
๊ณผ ์ฐ๊ฒฐํ๊ธฐยถ
Python์ฉ Snowpark API ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋น snowflake.snowpark.Session
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ Snowflake์ ๋ํ ์ฐ๊ฒฐ์ ์์ฑํ ์ ์์ต๋๋ค.
Snowpark Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ snowflake.core
์ ์ข
์์ฑ์ผ๋ก ์๋ ์ค์น๋์ง ์์ต๋๋ค. Snowpark Session
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ Snowflake์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
snowflake-snowpark-python
ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.pip install 'snowflake-snowpark-python>=1.5.0,<2.0.0'
Snowflake์ ์ฐ๊ฒฐ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ์์ ์ ์ ์ฌํ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
from snowflake.core import Root from snowflake.snowpark import Session session = Session.builder.config("connection_name", "myconnection").create() root = Root(session)
์ด ์์ ์ ์ฝ๋๋ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ๋
myconnection
์ด๋ผ๋ ์ฐ๊ฒฐ ์ ์๋ฅผ ์ฌ์ฉํ์ฌSession
์ค๋ธ์ ํธ๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ฝ๋์์๋ ๊ฒฐ๊ณผSession
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ API๋ฅผ ์ฌ์ฉํRoot
์ค๋ธ์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
Session
์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ Snowpark Python ์ธ์
๋ง๋ค๊ธฐ ์น์
์ ์ฐธ์กฐํ์ญ์์ค.
Python ์ปค๋ฅํฐ Connection
์ผ๋ก ์ฐ๊ฒฐํ๊ธฐยถ
Python์ฉ Snowflake ์ปค๋ฅํฐ ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋น snowflake.connector.connect
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ Snowflake์ ๋ํ ์ฐ๊ฒฐ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด ํจ์๋ Connection
์ ๋ฐํํฉ๋๋ค.
Python Connector ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๋๋ก ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. snowflake
์์ ํจํค์ง๋ฅผ ์ค์นํ๋ฉด snowflake-connector-python
ํจํค์ง๊ฐ ์ข
์์ฑ์ผ๋ก ์๋ ์ค์น๋ฉ๋๋ค.
๋ค์ ์์ ์ ์ฝ๋๋ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ๋ myconnection
์ด๋ผ๋ ์ฐ๊ฒฐ ์ ์๋ฅผ ์ฌ์ฉํ์ฌ Connection
์ค๋ธ์ ํธ๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ฝ๋์์๋ ๊ฒฐ๊ณผ Connection
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ API๋ฅผ ์ฌ์ฉํ Root
์ค๋ธ์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
from snowflake.connector import connect
from snowflake.core import Root
connection = connect(connection_name="myconnection")
root = Root(connection)
Python์ฉ Snowflake ์ปค๋ฅํฐ API์ ๋ํ ์์ธํ ๋ด์ฉ์ Python ์ปค๋ฅํฐ API ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
Root
์ค๋ธ์ ํธ ์ฌ์ฉํ๊ธฐยถ
Snowflake ์ฐ๊ฒฐ์์ ์์ฑ๋ Root
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ๋ฉด Snowflake Python APIs ์ ์ค๋ธ์ ํธ์ ๋ฉ์๋์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Root
์ค๋ธ์ ํธ๋ API์์ ๋ชจ๋ธ๋งํ ๋ฆฌ์์ค ํธ๋ฆฌ์ ๋ฃจํธ์
๋๋ค. Root
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ API๋ก ํ์๋๋ Snowflake ์ค๋ธ์ ํธ์ ์ํธ ์์ฉํฉ๋๋ค.
๋ค์ ์์ ์ ์ฝ๋์์๋ mytask
๋ผ๋ ์์
์ ์ฌ๊ฐํ๊ธฐ ์ํด Root
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ Snowflake ์ค๋ธ์ ํธ์ ์ก์ธ์คํฉ๋๋ค. ์์
์ mydb
๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ myschema
๋ผ๋ ์คํค๋ง์ ์์ต๋๋ค. ์ด ์ฝ๋์์๋ databases
, schemas
๋ฐ tasks
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์
์ ๋ํ๋ด๋ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
tasks = root.databases["mydb"].schemas["myschema"].tasks
mytask = tasks["mytask"]
mytask.resume()