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)
해당 코드에서는 결과 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)
이 코드는 WarehouseCollection
변수 warehouses
를 생성하고 WarehouseCollection.create
를 사용하여 Snowflake에 새 웨어하우스를 생성합니다.
웨어하우스 세부 정보 가져오기¶
Warehouse
오브젝트를 반환하는 WarehouseResource.fetch
메서드를 호출하여 웨어하우스에 대한 정보를 얻을 수 있습니다.
다음 예제의 코드로 이름이 my_wh
인 웨어하우스에 대한 정보를 가져옵니다.
my_wh = root.warehouses["my_wh"].fetch()
print(my_wh.to_dict())
웨어하우스 생성 또는 변경하기¶
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)
이 경우 이전에 다른 속성으로 생성한 경우 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)
웨어하우스 작업 수행하기¶
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()