Python을 사용하여 Snowflake 가상 웨어하우스 관리하기

Python을 사용하여 Snowflake의 컴퓨팅 리소스 클러스터인 Snowflake 가상 웨어하우스를 관리할 수 있습니다. 웨어하우스의 개요는 가상 웨어하우스 섹션을 참조하십시오.

Snowflake Python API는 다음 두 가지 별개 유형의 웨어하우스를 나타냅니다.

  • Warehouse: 이름, 크기, 유형, 자동 재개, 자동 일시 중단 설정 등 웨어하우스의 속성을 노출합니다.

  • WarehouseResource: 해당 Warehouse 오브젝트를 가져오고, 웨어하우스를 일시 중단 및 재개하고, 웨어하우스를 삭제하는 데 사용할 수 있는 메서드를 노출합니다.

전제 조건

이 항목의 예제에서는 Snowflake와 연결하고 Snowflake Python API를 사용할 Root 오브젝트를 생성하는 코드를 추가했다고 가정합니다.

예를 들어, 다음 코드는 구성 파일에 정의된 연결 매개 변수를 사용하여 Snowflake에 대한 연결을 생성합니다.

from snowflake.core import Root
from snowflake.snowpark import Session

session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Copy

해당 코드에서는 결과 Session 오브젝트를 사용하여 API의 유형과 메서드를 사용하기 위해 Root 오브젝트를 생성합니다. 자세한 내용은 Snowflake Python API를 사용하여 Snowflake에 연결하기 섹션을 참조하십시오.

웨어하우스 만들기

웨어하우스를 만들려면 먼저 Warehouse 오브젝트를 만든 다음 API Root 오브젝트에서 WarehouseCollection 오브젝트를 만드십시오. WarehouseCollection.create 를 사용하여 Snowflake에 새 웨어하우스를 추가합니다.

다음 예제의 코드는 my_wh 라는 웨어하우스를 나타내는 Warehouse 오브젝트를 생성합니다.

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh = Warehouse(
  name="my_wh",
  warehouse_size="SMALL",
  auto_suspend=600,
)
warehouses = root.warehouses
warehouses.create(my_wh)
Copy

이 코드는 WarehouseCollection 변수 warehouses 를 생성하고 WarehouseCollection.create 를 사용하여 Snowflake에 새 웨어하우스를 생성합니다.

웨어하우스 세부 정보 가져오기

Warehouse 오브젝트를 반환하는 WarehouseResource.fetch 메서드를 호출하여 웨어하우스에 대한 정보를 얻을 수 있습니다.

다음 예제의 코드로 my_wh 라는 웨어하우스에 대한 정보를 가져옵니다.

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh = root.warehouses["my_wh"].fetch()
print(my_wh.to_dict())
Copy

웨어하우스 생성 또는 업데이트하기

웨어하우스를 나타내는 Warehouse 오브젝트의 속성을 설정한 다음 WarehouseResource.create_or_update 메서드로 이 오브젝트를 Snowflake에 전달하여 기존 웨어하우스의 특성을 업데이트할 수 있습니다.

웨어하우스를 생성하려는 경우 새 웨어하우스를 설명하는 Warehouse 오브젝트를 전달할 수도 있습니다.

다음 예제의 코드는 웨어하우스의 이름, 크기 및 자동 일시 중단 설정을 설정한 다음 Snowflake에서 웨어하우스를 업데이트하고 웨어하우스가 아직 없으면 생성합니다.

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh = Warehouse(
  name="my_wh",
  warehouse_size="LARGE",
  auto_suspend=1800,
)
my_wh_res = root.warehouses["my_wh"]
my_wh_res.create_or_update(my_wh)
Copy

이 경우 이전에 다른 속성으로 생성한 경우 my_wh 웨어하우스의 크기를 LARGE 로 변경하고 자동 일시 중단 설정을 1800 으로 변경합니다.

웨어하우스 나열하기

Warehouse 오브젝트의 PagedIter 반복기를 반환하는 WarehouseCollection.iter 메서드를 사용하여 웨어하우스를 나열할 수 있습니다.

다음 예제의 코드로 이름에 my 라는 텍스트가 포함되는 웨어하우스를 나열하고 각 작업의 이름을 인쇄합니다.

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse, WarehouseCollection

warehouses: WarehouseCollection = root.warehouses
wh_iter = warehouses.iter(like="my%")  # returns a PagedIter[Warehouse]
for wh_obj in wh_iter:
  print(wh_obj.name)
Copy

웨어하우스 작업 수행하기

WarehouseResource 오브젝트를 사용하여 웨어하우스 일시 중단 및 재개, 웨어하우스에 대한 모든 쿼리 중단 등 일반적인 웨어하우스 작업을 수행할 수 있습니다.

다음 예제의 코드는 my_wh 웨어하우스를 일시 중단 및 재개하고, 웨어하우스에서 실행 중이거나 대기 중인 쿼리를 모두 중단한 다음, 웨어하우스를 삭제합니다.

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh_res = root.warehouses["my_wh"]

my_wh_res.suspend()
my_wh_res.resume()
my_wh_res.abort_all_queries()
my_wh_res.delete()
Copy