์์ต์ 1: ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง, ํ ์ด๋ธ, ์จ์ดํ์ฐ์ค ๋ง๋ค๊ธฐยถ
์๊ฐยถ
์ด ์์ต์์์๋ Snowflake Python APIs ์ ์ฌ์ฉํ์ฌ Snowflake ๋ฆฌ์์ค ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ ์ฌํญ์ ๋ํด ์์๋ด ๋๋ค. API๋ฅผ ์์ํ๋ ค๋ฉด Snowflake ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง, ํ ์ด๋ธ ๋ฐ ๊ฐ์ ์จ์ดํ์ฐ์ค๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
์ ์ ์กฐ๊ฑดยถ
์ฐธ๊ณ
Snowflake Python APIs ์์ต์์ ์ผ๋ฐ ์ค์ ์ ๋จ๊ณ๋ฅผ ์ด๋ฏธ ์๋ฃํ๋ค๋ฉด ์ด๋ฌํ ์ฌ์ ์๊ตฌ ์ฌํญ์ ๊ฑด๋๋ฐ๊ณ ์ด ์์ต์์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ก ์งํํ ์ ์์ต๋๋ค.
์ด ์์ต์๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ค์ ๋จ๊ณ๊ฐ ํฌํจ๋ ๊ณตํต ์ค์ ์ง์นจ์ ์๋ฃํด์ผ ํฉ๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค.
Snowflake Python APIs ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
Snowflake ์ฐ๊ฒฐ์ ๊ตฌ์ฑํฉ๋๋ค.
Python API ์์ต์์ ํ์ํ ๋ชจ๋ ๋ชจ๋์ ๊ฐ์ ธ์ต๋๋ค.
API
Root
์ค๋ธ์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฌํ ํ์ ์๊ฑด์ ์๋ฃํ๋ฉด API๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง, ํ ์ด๋ธ ๋ง๋ค๊ธฐยถ
root
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ Snowflake ๊ณ์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง ๋ฐ ํ
์ด๋ธ์ ์์ฑํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ ธํธ๋ถ์ ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
database = root.databases.create( Database( name="PYTHON_API_DB"), mode=CreateMode.or_replace )
์ด ์ฝ๋๋ ๊ธฐ๋ฅ์ ์ผ๋ก SQL ๋ช ๋ น
CREATE OR REPLACE DATABASE PYTHON_API_DB
์ ๋์ผํ๋ฉฐ, ๊ณ์ ์ ์ด๋ฆ์ดPYTHON_API_DB
์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ฝ๋๋ Snowflake์์ ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ํจํด์ ๋ฐ๋ฆ ๋๋ค.root.databases.create()
๋ Snowflake์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํจ์๋Database
์ค๋ธ์ ํธ์ ๋ชจ๋์ ๋ ๊ฐ์ง ์ธ์๋ฅผ ๋ฐ์ต๋๋ค.Database(name="PYTHON_API_DB")
๋ฅผ ์ฌ์ฉํ์ฌDatabase
์ค๋ธ์ ํธ๋ฅผ ์ ๋ฌํ๊ณname
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค. ๋ ธํธ๋ถ์ 3๋ฒ์งธ ์ค์์Database
๋ฅผ ๊ฐ์ ธ์๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค.์์ฑ ๋ชจ๋๋
mode
์ธ์๋ฅผ ์ ๋ฌํ์ฌ ์ง์ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐCreateMode.or_replace
๋ก ์ค์ ํ์ง๋ง ๋ค์ ๊ฐ๋ ์ ํจํฉ๋๋ค.CreateMode.if_not_exists
: ๊ธฐ๋ฅ์ SQL์ CREATE IF NOT EXISTS ์ ๋๋ฑํฉ๋๋ค.CreateMode.error_if_exists
: ํด๋น ์ค๋ธ์ ํธ๊ฐ Snowflake์ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋ฐ์์ํต๋๋ค. ๋ชจ๋๊ฐ ์ง์ ๋์ง ์์ผ๋ฉด ์ด ๊ฐ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ด๋ฆ์ด
database
์ธ ์์ฑํ ์ค๋ธ์ ํธ์ ์ ์ฅํ์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ Python์ ์ฌ์ฉํ์ฌ Snowflake ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง, ํ ์ด๋ธ ๋ฐ ๋ทฐ ๊ด๋ฆฌํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
Snowsight ์์ Snowflake ๊ณ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์น์ ์ผ๋ก ์ด๋ํฉ๋๋ค. ์ฝ๋๊ฐ ์ฑ๊ณตํ๋ฉด
PYTHON_API_DB
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ชฉ๋ก์ ํ์๋ฉ๋๋ค.ํ
VS Code๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, Snowflake ํ์ฅ ํ๋ก๊ทธ๋จ ์ ์ค์นํ์ฌ ํธ์ง๊ธฐ ๋ด์์ ๋ชจ๋ Snowflake ์ค๋ธ์ ํธ๋ฅผ ์ดํด๋ด ๋๋ค.
PYTHON_API_DB
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.schema = database.schemas.create( Schema( name="PYTHON_API_SCHEMA"), mode=CreateMode.or_replace, )
์ด์ ์ ์์ฑํ
database
์ค๋ธ์ ํธ์์.schemas.create()
๋ฅผ ํธ์ถํ๋ค๋ ์ ์ ์ ์ํ์ญ์์ค.๋ฐฉ๊ธ ์์ฑํ ์คํค๋ง์์ ํ ์ด๋ธ์ ์์ฑํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
table = schema.tables.create( Table( name="PYTHON_API_TABLE", columns=[ TableColumn( name="TEMPERATURE", datatype="int", nullable=False, ), TableColumn( name="LOCATION", datatype="string", ), ], ), mode=CreateMode.or_replace )
์ด ์ฝ๋๋
PYTHON_API_SCHEMA
์คํค๋ง์ ๋ ๊ฐ์ ์ด๊ณผ ํด๋น ๋ฐ์ดํฐ ํ์ ์ด ์ง์ ๋ ํ ์ด๋ธ์ ์์ฑํ๋ฉฐ,TEMPERATURE
๋ฅผint
๋ก,LOCATION
์string
์ผ๋ก ์ง์ ํฉ๋๋ค.์ด ๋ง์ง๋ง ๋ ์ฝ๋ ์์ ๋
PYTHON_API_DB
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ํจํด์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์ต์ํ ๊ฒ์ ๋๋ค.์ค๋ธ์ ํธ๊ฐ ์์ฑ๋์๋์ง ํ์ธํ๋ ค๋ฉด Snowsight ์์ Snowflake ๊ณ์ ์ผ๋ก ๋์๊ฐ๋๋ค.
์ค๋ธ์ ํธ ๋ฐ์ดํฐ ๊ฒ์ํ๊ธฐยถ
Snowflake์์ ์ค๋ธ์ ํธ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
์ด์ ์ ์์ฑํ
PYTHON_API_TABLE
ํ ์ด๋ธ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ค๋ฉด ๋ค์ ๋ ธํธ๋ถ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.table_details = table.fetch()
fetch()
๋TableModel
์ค๋ธ์ ํธ๋ฅผ ๋ฐํํฉ๋๋ค.๊ทธ๋ฐ ๋ค์ ๊ฒฐ๊ณผ ์ค๋ธ์ ํธ์์
.to_dict()
๋ฅผ ํธ์ถํ์ฌ ์์ธํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.ํ ์ด๋ธ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
table_details.to_dict()
๋ ธํธ๋ถ์๋ ๋ค์๊ณผ ์ ์ฌํ
PYTHON_API_TABLE
ํ ์ด๋ธ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์ฌ์ ์ด ํ์๋์ด์ผ ํฉ๋๋ค.{ "name": "PYTHON_API_TABLE", "kind": "TABLE", "enable_schema_evolution": False, "change_tracking": False, "data_retention_time_in_days": 1, "max_data_extension_time_in_days": 14, "default_ddl_collation": "", "columns": [ {"name": "TEMPERATURE", "datatype": "NUMBER(38,0)", "nullable": False}, {"name": "LOCATION", "datatype": "VARCHAR(16777216)", "nullable": True}, ], "created_on": datetime.datetime( 2024, 5, 9, 8, 59, 15, 832000, tzinfo=datetime.timezone.utc ), "database_name": "PYTHON_API_DB", "schema_name": "PYTHON_API_SCHEMA", "rows": 0, "bytes": 0, "owner": "ACCOUNTADMIN", "automatic_clustering": False, "search_optimization": False, "owner_role_type": "ROLE", }
ํ์๋ ๊ฒ์ฒ๋ผ ์ด ์ฌ์ ์๋ ์ด์ ์ ์์ฑํ
PYTHON_API_TABLE
ํ ์ด๋ธ์ ๋ํ ์ ๋ณด๊ฐcolumns
,owner
,database
,schema
๋ฑ์ ๋ํ ์์ธํ ์ ๋ณด์ ํจ๊ป ํฌํจ๋์ด ์์ต๋๋ค.
์ค๋ธ์ ํธ ๋ฉํ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋น์ฆ๋์ค ๋
ผ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ค๋ธ์ ํธ์ ๋ํ ํน์ ์ ๋ณด์ ๋ฐ๋ผ ์คํ๋๋ ๋
ผ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค์์๋ fetch()
๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ธ์ ํธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํ ์ด๋ธ ๋ณ๊ฒฝยถ
ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํ
์ด๋ธ์ ์ด์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ์ฌ PYTHON_API_TABLE
ํ
์ด๋ธ์๋ ๋ ๊ฐ์ ์ด TEMPERATURE
๋ฐ LOCATION
์ด ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์์๋ int
์ ํ์ ELEVATION
๋ผ๋ ์ ์ด์ ์ถ๊ฐํ๊ณ ์ด๋ฅผ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ก ์ค์ ํ๋ ค๊ณ ํฉ๋๋ค.
๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
table_details.columns.append( TableColumn( name="elevation", datatype="int", nullable=False, constraints=[PrimaryKey()], ) )
์ฐธ๊ณ
์ด ์ฝ๋๋ ์ด์ ์์ฑํ์ง ์์ต๋๋ค. ๋์ ์ด ์ด ์ ์๋
TableModel
์์ ํ ์ด๋ธ์ ์ด์ ๋ํ๋ด๋ ๋ฐฐ์ด์ ์ถ๊ฐ๋ฉ๋๋ค. ์ด ๋ฐฐ์ด์ ๋ณด๋ ค๋ฉด ํ ์ด๋ธ ๋ฉํ๋ฐ์ดํฐ ๋ณด๊ธฐ ์ง์นจ์ ์ค๋ช ๋ ๋๋กcolumns
์ ๊ฐ์ ๊ฒํ ํฉ๋๋ค.ํ ์ด๋ธ์ ์์ ํ๊ณ ์ด์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
table.create_or_alter(table_details)
์ด ์ค์์๋
PYTHON_API_TABLE
์ ๋ํ๋ด๋ ์ค๋ธ์ ํธ์์create_or_alter()
๋ฅผ ํธ์ถํ๊ณtable_details
์ ์ ๋ฐ์ดํธ๋ ๊ฐ์ ์ ๋ฌํฉ๋๋ค. ์ด ์ค์PYTHON_API_TABLE
์ELEVATION
์ด์ ์ถ๊ฐํฉ๋๋ค.์ด์ด ์ถ๊ฐ๋์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
table.fetch().to_dict()
์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํ ํํ์ฌ์ผ ํฉ๋๋ค.
{ "name": "PYTHON_API_TABLE", "kind": "TABLE", "enable_schema_evolution": False, "change_tracking": False, "data_retention_time_in_days": 1, "max_data_extension_time_in_days": 14, "default_ddl_collation": "", "columns": [ {"name": "TEMPERATURE", "datatype": "NUMBER(38,0)", "nullable": False}, {"name": "LOCATION", "datatype": "VARCHAR(16777216)", "nullable": True}, {"name": "ELEVATION", "datatype": "NUMBER(38,0)", "nullable": False}, ], "created_on": datetime.datetime( 2024, 5, 9, 8, 59, 15, 832000, tzinfo=datetime.timezone.utc ), "database_name": "PYTHON_API_DB", "schema_name": "PYTHON_API_SCHEMA", "rows": 0, "bytes": 0, "owner": "ACCOUNTADMIN", "automatic_clustering": False, "search_optimization": False, "owner_role_type": "ROLE", "constraints": [ {"name": "ELEVATION", "column_names": ["ELEVATION"], "constraint_type": "PRIMARY KEY"} ] }
์ด์
ELEVATION
์ด์ ํฌํจํ๋columns
์ ๊ฐ๊ณผconstraints
์ ๊ฐ์ ๊ฒํ ํฉ๋๋ค.์ ์ด์ด ์๋์ง ํ์ธํ๋ ค๋ฉด Snowsight ์์ Snowflake ๊ณ์ ์ผ๋ก ๋์๊ฐ์ ํ ์ด๋ธ์ ์ดํด๋ด ๋๋ค.
์จ์ดํ์ฐ์ค ์์ฑ ๋ฐ ๊ด๋ฆฌยถ
Snowflake Python APIs ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์จ์ดํ์ฐ์ค๋ฅผ ๊ด๋ฆฌํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํด ์ผ์์ ์ผ๋ก ๋ค๋ฅธ ์จ์ดํ์ฐ์ค๋ฅผ ์์ฑํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์์๋ API๋ฅผ ์ฌ์ฉํ์ฌ ์จ์ดํ์ฐ์ค๋ฅผ ์์ฑ, ์ผ์ ์ค๋จ ๋๋ ์ญ์ ํ ์ ์์ต๋๋ค.
์ธ์ ๊ณผ ๊ด๋ จ๋ ์จ์ดํ์ฐ์ค ์ปฌ๋ ์ ์ ๊ฒ์ํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
warehouses = root.warehouses
๊ฒฐ๊ณผ
warehouses
์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ ์์ ์จ์ดํ์ฐ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.์ ์จ์ดํ์ฐ์ค๋ฅผ ์ ์ํ๊ณ ์์ฑํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
python_api_wh = Warehouse( name="PYTHON_API_WH", warehouse_size="SMALL", auto_suspend=500, ) warehouse = warehouses.create(python_api_wh,mode=CreateMode.or_replace)
์ด ์ฝ๋์์๋
Warehouse
๋ฅผ ์ธ์คํด์คํํ๊ณ ์จ์ดํ์ฐ์ค์ ์ด๋ฆ, ํฌ๊ธฐ, ์๋ ์ผ์ ์ค๋จ ์ ์ฑ ์ ์ง์ ํ์ฌ ์ ์จ์ดํ์ฐ์ค๋ฅผ ์ ์ํฉ๋๋ค. ์๋ ์ผ์ ์ค๋จ ์๊ฐ ์ ํ๋ ์ด ๋จ์์ ๋๋ค. ์ด ๊ฒฝ์ฐ, 8.33๋ถ ๋์ ์๋ฌด๋ฐ ํ๋์ด ์์ผ๋ฉด ์จ์ดํ์ฐ์ค๊ฐ ์ผ์ ์ค๋จ๋ฉ๋๋ค.๊ทธ๋ฐ ๋ค์ ์จ์ดํ์ฐ์ค ์ปฌ๋ ์ ์์
create()
๋ฅผ ํธ์ถํ์ฌ ์จ์ดํ์ฐ์ค๋ฅผ ์์ฑํฉ๋๋ค. ๊ฒฐ๊ณผwarehouse
์ค๋ธ์ ํธ์ ์ฐธ์กฐ๋ฅผ ์ ์ฅํฉ๋๋ค.Snowsight ์์ Snowflake ๊ณ์ ์ผ๋ก ์ด๋ํ์ฌ ์จ์ดํ์ฐ์ค๊ฐ ์์ฑ๋์๋์ง ํ์ธํฉ๋๋ค.
์จ์ดํ์ฐ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
warehouse_details = warehouse.fetch() warehouse_details.to_dict()
์ด ์ฝ๋๋ ์ด์ ๋จ๊ณ์์ ํ ์ด๋ธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ํจํด์ ๋ฐ๋ฅด๋ฏ๋ก ์ต์ํด ๋ณด์ผ ๊ฒ์ ๋๋ค. ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํด์ผ ํฉ๋๋ค.
{ 'name': 'PYTHON_API_WH', 'auto_suspend': 500, 'auto_resume': 'true', 'resource_monitor': 'null', 'comment': '', 'max_concurrency_level': 8, 'statement_queued_timeout_in_seconds': 0, 'statement_timeout_in_seconds': 172800, 'tags': {}, 'warehouse_type': 'STANDARD', 'warehouse_size': 'Small' }
์ ํ ์ฌํญ: ์ธ์ ์ ์ฌ๋ฌ ๊ฐ์ ์จ์ดํ์ฐ์ค๊ฐ ์๋ ๊ฒฝ์ฐ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ณตํ๊ฑฐ๋ ํน์ ์จ์ดํ์ฐ์ค๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
warehouse_list = warehouses.iter(like="PYTHON_API_WH") result = next(warehouse_list) result.to_dict()
์ด ์ฝ๋์์๋ ์จ์ดํ์ฐ์ค ์ปฌ๋ ์ ์์
like
๋ฅผ ํธ์ถํ๊ณiter()
์ธ์๋ฅผ ์ ๋ฌํ๋ฉด ์ง์ ๋ ๋ฌธ์์ด๊ณผ ์ด๋ฆ์ด ์ผ์นํ๋ ๋ชจ๋ ์จ์ดํ์ฐ์ค๋ฅผ ๋ฐํํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ด์ ์ ์ ์ํ ์จ์ดํ์ฐ์ค์ ์ด๋ฆ์ ์ ๋ฌํ์ง๋ง ์ด ์ธ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ๋ฌธ์์ด๋ก ํํฐ ์ญํ ์ ํ๋ฉฐ%
๋ฐ_
๊ฐ์ SQL ์์ผ๋์นด๋ ๋ฌธ์๋ฅผ ์ง์ํฉ๋๋ค.์ ์ ์คํํ ํ ๋ค์ ์ฝ๋์ ์ ์ฌํ ์ถ๋ ฅ์ ์ผ์นํ๋ ์จ์ดํ์ฐ์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐํ๋์์์ ๋ณด์ฌ์ค๋๋ค.
{ 'name': 'PYTHON_API_WH', 'auto_suspend': 500, 'auto_resume': 'true', 'resource_monitor': 'null', 'comment': '', 'max_concurrency_level': 8, 'statement_queued_timeout_in_seconds': 0, 'statement_timeout_in_seconds': 172800, 'tags': {}, 'warehouse_type': 'STANDARD', 'warehouse_size': 'Small' }
์จ์ดํ์ฐ์ค์ ํฌ๊ธฐ๋ฅผ
LARGE
๋ก ๋ณ๊ฒฝํ์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์์ ํ๋ ค๋ฉด ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.warehouse = root.warehouses.create(Warehouse( name="PYTHON_API_WH", warehouse_size="LARGE", auto_suspend=500, ), mode=CreateMode.or_replace)
์จ์ดํ์ฐ์ค ํฌ๊ธฐ๊ฐ
LARGE
๋ก ์ ๋ฐ์ดํธ๋์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ํํฉ๋๋ค.๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
warehouse.fetch().size
Snowsight ์์ Snowflake ๊ณ์ ์ผ๋ก ์ด๋ํ์ฌ ๋ณ๊ฒฝ๋ ์จ์ดํ์ฐ์ค ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.
์ ํ ์ฌํญ: ์จ์ดํ์ฐ์ค๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ผ๋ฉด ์ญ์ ํฉ๋๋ค. ๋ค์ ์ ์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
warehouse.drop()
์จ์ดํ์ฐ์ค ์ญ์ ๋ฅผ ํ์ธํ๋ ค๋ฉด Snowsight ์์ Snowflake ๊ณ์ ์ผ๋ก ๋์๊ฐ๋๋ค.
๋ค์์๋ ๋ฌด์์ ํด์ผ ํฉ๋๊น?ยถ
์ถํํฉ๋๋ค! ์ด ์์ต์์์๋ Snowflake Python APIs ์ ์ฌ์ฉํ์ฌ Snowflake ๋ฆฌ์์ค ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ ์ฌํญ์ ๋ํด ์์๋ด ๋๋ค.
์์ฝยถ
์ด ๊ณผ์ ์์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ต๋๋ค.
Snowflake Python APIs ์ ์ค์นํฉ๋๋ค.
Snowflake์ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง, ํ ์ด๋ธ์ ๋ง๋ญ๋๋ค.
์ค๋ธ์ ํธ ์ ๋ณด๋ฅผ ๊ฒ์ํฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์ค๋ธ์ ํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์จ์ดํ์ฐ์ค๋ฅผ ์์ฑ, ์ค๋จ ๋ฐ ์ญ์ ํฉ๋๋ค.
๋ค์ ์์ต์ยถ
์ด์ ์์ ๋ฐ ์์ ๊ทธ๋ํ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์์ต์ 2: ์์ ๋ฐ ์์ ๊ทธ๋ํ(DAG) ๋ง๋ค๊ธฐ ๋ฐ ๊ด๋ฆฌ ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์ถ๊ฐ ๋ฆฌ์์คยถ
API๋ฅผ ์ฌ์ฉํ์ฌ Snowflake์์ ๋ค๋ฅธ ์ ํ์ ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๋ ๋ง์ ์์ ๋ ๋ค์ ๊ฐ๋ฐ์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๊ฐ์ด๋ |
์ค๋ช |
---|---|
Python์ ์ฌ์ฉํ์ฌ Snowflake ์ฌ์ฉ์, ์ญํ ๋ฐ ๊ถํ ๊ด๋ฆฌ |
API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์, ์ญํ ๋ฐ ๋ณด์กฐ๊ธ์ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. |
Python์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ ๋ฆฌ์์ค ๊ด๋ฆฌ |
API๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ๋ณผ๋ฅจ, ํ์ดํ, ์คํ ์ด์ง๋ฅผ ํฌํจํ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. |
Python์ ์ฌ์ฉํ์ฌ Snowflake ์์ ๋ฐ ์์ ๊ทธ๋ํ ๊ด๋ฆฌํ๊ธฐ |
API๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๊ณผ ์์ ๊ทธ๋ํ๋ฅผ ์์ฑ, ์คํ, ๊ด๋ฆฌํฉ๋๋ค. |
Python์ ์ฌ์ฉํ์ฌ Snowpark ์ปจํ ์ด๋ ์๋น์ค(์๋น์ค ํจ์ ํฌํจ) ๊ด๋ฆฌํ๊ธฐ |
API๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํจํ ํ, ์ด๋ฏธ์ง ๋ฆฌํฌ์งํ ๋ฆฌ, ์๋น์ค, ์๋น์ค ํจ์ ๋ฑ Snowpark Container Services์ ๊ตฌ์ฑ ์์๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. |