Python에서 Snowflake Notebooks 관리하기

Python을 사용하여 Snowsight 의 개발 인터페이스인 Snowflake Notebooks 을 관리할 수 있으며, 이는 Python 및 SQL을 위한 대화형 셀 기반 프로그래밍 환경을 제공합니다. 자세한 내용은 Snowflake Notebooks 정보 섹션을 참조하십시오.

Snowflake Python APIs 은 다음 두 가지 별개 유형의 노트북을 나타냅니다.

  • Notebook: 노트북의 이름, 버전, 쿼리 웨어하우스, .ipynb 파일과 같은 속성을 노출합니다.

  • NotebookResource: 해당 Notebook 오브젝트를 가져오고, 노트북의 버전을 관리하고, 노트북을 실행하는 데 사용할 수 있는 메서드를 노출합니다.

전제 조건

이 항목의 예제에서는 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에 연결 섹션을 참조하십시오.

노트북 만들기

노트북을 생성하려면 먼저 Notebook 오브젝트를 생성한 다음 API Root 오브젝트에서 NotebookCollection 오브젝트를 생성합니다. NotebookCollection.create 를 사용하여 Snowflake에 새 노트북을 추가합니다.

다음 예제의 코드는 my_db 데이터베이스와 my_schema 스키마에서 이름이 my_nb 인 노트북을 나타내는 Notebook 오브젝트를 생성합니다.

from snowflake.core.notebook import Notebook

my_nb = Notebook(name="my_nb")

notebooks = root.databases["my_db"].schemas["my_schema"].notebooks
notebooks.create(my_nb)
Copy

이 코드는 NotebookCollection 변수 notebooks 를 생성하고 NotebookCollection.create 를 사용하여 Snowflake에 새 노트북을 생성합니다.

기존 .ipynb 파일이 있는 스테이지에서 노트북을 생성할 수도 있습니다. 다음 예제의 코드는 @my_stage 스테이지에서 notebook_file.ipynb 파일로 노트북을 생성합니다.

from snowflake.core.notebook import Notebook

my_nb = Notebook(name="my_nb",
  query_warehouse="my_wh",
  from_location="@my_stage",
  main_file="notebook_file.ipynb")

notebooks = root.databases["my_db"].schemas["my_schema"].notebooks
notebooks.create(my_nb)
Copy

노트북 세부 정보 가져오기

Notebook 오브젝트를 반환하는 NotebookResource.fetch 메서드를 호출하여 노트북에 대한 정보를 얻을 수 있습니다.

다음 예제의 코드는 my_db 데이터베이스와 my_schema 스키마에서 이름이 my_nb 인 느투북에 대한 정보를 가져옵니다.

my_nb = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"].fetch()
print(my_nb.to_dict())
Copy

노트북 나열하기

Notebook 오브젝트의 PagedIter 반복기를 반환하는 NotebookCollection.iter 메서드를 사용하여 노트북을 나열할 수 있습니다.

다음 예제의 코드는 my_db 데이터베이스와 my_schema 스키마에서 이름이 my 로 시작하는 노트북을 나열한 다음 각각의 이름을 출력합니다.

from snowflake.core.notebook import NotebookCollection

notebooks: NotebookCollection = root.databases["my_db"].schemas["my_schema"].notebooks
nb_iter = notebooks.iter(like="my%")  # returns a PagedIter[Notebook]
for nb_obj in nb_iter:
  print(nb_obj.name)
Copy

노트북 작업 수행하기

버전 관리, 노트북 실행과 같은 일반적인 노트북 작업을 NotebookResource 오브젝트로 수행할 수 있습니다.

노트북 리소스로 할 수 있는 일부 작업을 보여주기 위해 다음 예제의 코드는 다음을 수행합니다.

  1. my_nb 노트북 리소스 오브젝트를 가져옵니다.

  2. 노트북 오브젝트에 생명 버전을 추가합니다. 이는 ALTER NOTEBOOK … ADD LIVE VERSION 과 동일합니다.

  3. Git 연결이 설정되어 있는 경우, 노트북의 라이브 버전을 Git 리포지토리에 커밋합니다. 그렇지 않으면 라이브 버전을 null 로 설정합니다.

    자세한 내용은 ALTER NOTEBOOK 섹션을 참조하십시오.

  4. 노트북을 실행합니다.

    참고

    노트북을 실행하려면 먼저 라이브 버전을 추가해야 합니다.

  5. 노트북을 떨어뜨린다.

my_nb_res = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"]

my_nb_res.add_live_version(from_last=True)
my_nb_res.commit()
my_nb_res.execute()
my_nb_res.drop()
Copy