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

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

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

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

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

전제 조건

이 항목의 예제에서는 Snowflake와 연결하고 Snowflake Python APIs 을 사용할 수 있는 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 APIs 을 사용하여 Snowflake에 연결 섹션을 참조하십시오.

웨어하우스 만들기

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

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

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 인 웨어하우스에 대한 정보를 가져옵니다.

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

웨어하우스 생성 또는 변경하기

Warehouse 오브젝트의 속성을 설정하고 이를 WarehouseResource.create_or_alter 메서드에 전달하여 존재하지 않는 경우 웨어하우스를 생성하거나, 존재하는 경우 웨어하우스 정의에 따라 변경할 수 있습니다. create_or_alter 의 동작은 멱등성을 갖도록 설계되었으므로, 메서드를 실행하기 전에 웨어하우스가 존재하는지 여부에 관계없이 결과 웨어하우스 오브젝트는 동일합니다.

참고

create_or_alter 메서드는 명시적으로 정의하지 않은 모든 웨어하우스 속성에 대해 기본값을 사용합니다. 예를 들어, auto_suspend 을 설정하지 않으면 이전에 다른 값으로 웨어하우스가 존재했더라도 기본값은 None 으로 설정됩니다.

다음 예제의 코드는 my_wh 웨어하우스의 크기와 자동 일시 중단 설정을 업데이트한 다음 Snowflake의 웨어하우스를 변경합니다.

from snowflake.core.warehouse import Warehouse

my_wh = root.warehouses["my_wh"].fetch()
my_wh.warehouse_size = "LARGE"
my_wh.auto_suspend = 1800

my_wh_res = root.warehouses["my_wh"]
my_wh_res.create_or_alter(my_wh)
Copy

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

웨어하우스 나열하기

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

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

from snowflake.core.warehouse import 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 웨어하우스를 일시 중단한 후 다시 시작하고, 웨어하우스에서 실행 중이거나 큐에 대기 중인 모든 쿼리를 중단한 다음 웨어하우스를 삭제합니다.

my_wh_res = root.warehouses["my_wh"]

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