Gerenciamento de Snowflake Notebooks com Python¶
É possível usar Python para gerenciar Snowflake Notebooks, que é uma interface de desenvolvimento no Snowsight que oferece um ambiente de programação interativo baseado em células para Python e SQL. Para obter mais informações, consulte Sobre os notebooks Snowflake.
O Snowflake Python APIs representa notebooks com dois tipos separados:
Notebook
: Expõe as propriedades de um notebook, como nome, versão, warehouse de consulta e arquivo.ipynb
.NotebookResource
: Expõe métodos que podem ser usados para buscar um objetoNotebook
correspondente, gerenciar versões do notebook e executar o notebook.
Pré-requisitos¶
Os exemplos neste tópico pressupõem que você tenha adicionado código para se conectar ao Snowflake e criar um objeto Root
a partir do qual usar o Snowflake Python APIs.
Por exemplo, o seguinte código usa parâmetros de conexão definidos em um arquivo de configuração para criar uma conexão com o Snowflake:
from snowflake.core import Root
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Usando o objeto Session
resultante, o código cria um objeto Root
para usar os tipos e métodos de API. Para obter mais informações, consulte Conexão ao Snowflake com o Snowflake Python APIs.
Criação de um notebook¶
Para criar um notebook, primeiro crie um objeto Notebook
e depois crie um objeto NotebookCollection
a partir do objeto Root
da API. Usando NotebookCollection.create
, adicione o novo notebook ao Snowflake.
O código no exemplo a seguir cria um objeto Notebook
que representa um notebook nomeado my_nb
no banco de dados my_db
e no esquema my_schema
:
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)
O código cria uma variável NotebookCollection
chamada notebooks
e usa NotebookCollection.create
para criar um novo notebook no Snowflake.
Você também pode criar um notebook a partir de um estágio com um arquivo .ipynb
existente. O código no exemplo a seguir cria um notebook a partir do estágio @my_stage
com o arquivo 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)
Como obter detalhes do notebook¶
É possível obter informações sobre um notebook chamando o método NotebookResource.fetch
, que retorna um objeto Notebook
.
O código no exemplo a seguir obtém informações sobre um notebook nomeado my_nb
no banco de dados my_db
e no esquema my_schema
:
my_nb = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"].fetch()
print(my_nb.to_dict())
Listagem de cadernos¶
É possível listar notebooks usando o método NotebookCollection.iter
, que retorna um iterador PagedIter
de objetos Notebook
.
O código no exemplo a seguir lista os notebooks cujo nome começa com my
no banco de dados my_db
e no esquema my_schema
e, em seguida, imprime o nome de cada um:
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)
Execução de operações de notebook¶
É possível executar operações comuns de notebook – como gerenciar versões e executar notebooks – com um objeto NotebookResource
.
Para demonstrar algumas operações que é possível realizar com um recurso de notebook, o código no exemplo a seguir faz o seguinte:
Busca o objeto de recurso de notebook
my_nb
.Adiciona uma versão ativa ao objeto notebook. Isso equivale a ALTER NOTEBOOK … ADD LIVE VERSION.
Envia a versão ativa do notebook para um repositório Git, se uma conexão Git estiver definida. Caso contrário, define a versão ativa para
null
.Para obter mais informações, consulte ALTER NOTEBOOK.
Executa o notebook.
Nota
Para executar um notebook, é necessário primeiro adicionar uma versão ativa a ele.
Descarta o notebook.
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()