Desenvolvimento e execução de código nos Snowflake Notebooks¶
Este tópico descreve como escrever e executar códigos SQL, Python e Markdown em Snowflake Notebooks.
Noções básicas sobre células de notebooks¶
Esta seção apresenta algumas operações básicas de células. Quando você cria um notebook, três células de exemplo são exibidas. Você pode modificar essas células ou adicionar novas.
Crie uma nova célula:¶
Snowflake Notebooks oferecem suporte a três tipos de células: SQL, Python e Markdown. Para criar uma nova célula, você pode passar o mouse sobre uma célula existente ou rolar até a parte inferior do notebook e selecionar um dos botões para o tipo de célula que deseja adicionar.
Você pode alterar a linguagem da célula a qualquer momento após ela ter sido criada usando um dos dois métodos:
Selecione o menu suspenso de idiomas e escolha um idioma diferente.
Como mover células¶
É possível mover uma célula arrastando e soltando a célula com o mouse ou usando o menu de ações:
(Opção 1) Passe o mouse sobre a célula existente que deseja mover. Selecione o ícone
(arrastar e soltar) no lado esquerdo da célula e mova a célula para seu novo local.
(Opção 2) Selecione o menu de reticências verticais
(ações). Em seguida, selecione a ação apropriada.
Nota
Para mover o foco entre as células, use as setas para cima e para baixo.
Como excluir uma célula¶
Para excluir uma célula, siga estas etapas em um notebook:
Selecione Delete.
Selecione Delete novamente para confirmar.
Você pode usar um atalho de teclado para excluir uma célula também.
Para considerações ao usar Python e células SQL, consulte Considerações para execução de notebooks.
Execute as células em Snowflake Notebooks¶
Para executar células Python e SQL nos Snowflake Notebooks, você pode:
Executar uma única célula: escolha esta opção ao fazer atualizações de código frequentes.
Executar todas as células em um notebook em ordem sequencial: escolha esta opção antes de apresentar ou compartilhar um notebook para garantir que os destinatários consultem as informações mais atualizadas.
Pressione CMD + Shift + Return em um teclado Mac, ou CTRL + Shift + Enter em um teclado Windows.
Selecione Run all.
Executar uma célula e avançar para a próxima célula: escolha esta opção para executar uma célula e avançar para a próxima célula mais rapidamente.
Executar tudo acima: escolha esta opção ao executar uma célula que faça referência aos resultados de células anteriores.
Executar tudo abaixo: escolha esta opção ao executar uma célula da qual células posteriores dependem. Esta opção executa a célula atual e todas as células seguintes.
Quando uma célula está em execução, outras solicitações de execução são enfileiradas e serão executadas assim que a célula em execução ativa terminar.
Como inspecionar o status de uma célula¶
O status de execução da célula é indicado pelas cores exibidas pela célula. Essa cor de status é exibida em dois lugares: na parede à esquerda da célula e no mapa de navegação da célula à direita.
Cor do status da célula:
Ponto azul: a célula foi modificada, mas ainda não foi executada.
Vermelho: a célula foi executada na sessão atual e ocorreu um erro.
Verde: a célula foi executada na sessão atual sem erros.
Verde em movimento: a célula está em execução no momento.
Cinza: a célula foi executada em uma sessão anterior e os resultados mostrados são da sessão anterior. Os resultados das células da sessão interativa anterior são mantidos por 7 dias. Sessão interativa significa que o usuário executa o notebook de forma interativa em Snowsight, em vez daqueles que foram executados por um cronograma ou pelo comando EXECUTE NOTEBOOK SQL.
Cinza piscante: a célula está esperando para ser executada depois que você selecionar Run All.
Nota
As células Markdown não mostram nenhum status.
Depois que uma célula termina de ser executada, o tempo que levou para ser executada é exibido na parte superior da célula. Selecione esse texto para visualizar os detalhes da execução, incluindo os horários de início e término e o tempo total decorrido.
As células SQL contêm informações adicionais, como o warehouse usado para executar a consulta, as linhas retornadas e um hiperlink para a página do ID da consulta.
Como parar uma célula em execução¶
Para interromper a execução de qualquer célula de código que esteja em execução no momento, selecione Stop no canto superior direito da célula. Você também pode selecionar Stop no canto superior direito da página Notebooks. Enquanto as células estão funcionando, Run all se torna Stop.
Isso interrompe a execução da célula sendo executada no momento e de todas as células subsequentes que foram programadas para serem executadas.
Como formatar texto com Markdown¶
Para incluir Markdown em seu notebook, adicione uma célula Markdown:
Use um atalho de teclado e selecione Markdown ou + Markdown.
Selecione o ícone de lápis Edit markdown ou clique duas vezes na célula e comece a escrever Markdown.
Você pode digitar Markdown válido para formatar uma célula de texto. À medida que você digita, o texto formatado aparece abaixo da sintaxe Markdown.

Para exibir apenas o texto formatado, selecione o ícone de marca de seleção Done editing.

Nota
As células Markdown atualmente não oferecem suporte à renderização de HTML.
Noções básicas de Markdown¶
Esta seção descreve a sintaxe básica do Markdown para introduzir o assunto.
Cabeçalhos
Nível de título |
Sintaxe Markdown |
Exemplo |
---|---|---|
Nível superior |
# Top-level Header
|
![]() |
2º nível |
## 2nd-level Header
|
![]() |
3º nível |
### 3rd-level Header
|
![]() |
Formatação de texto em linha
Formato de texto |
Sintaxe Markdown |
Exemplo |
---|---|---|
Itálico |
*italicized text*
|
![]() |
Negrito |
**bolded text**
|
![]() |
Link |
[Link text](url)
|
![]() |
Listas
Tipo de lista |
Sintaxe Markdown |
Exemplo |
---|---|---|
Lista ordenada |
1. first item
2. second item
1. Nested first
2. Nested second
|
![]() |
Lista não ordenada |
- first item
- second item
- Nested first
- Nested second
|
![]() |
Formatação de código
Linguagem |
Sintaxe Markdown |
Exemplo |
---|---|---|
Python |
```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
|
![]() |
SQL |
```sql
SELECT * FROM MYTABLE
```
|
![]() |
Incorporar imagens
Tipo de arquivo |
Sintaxe Markdown |
Exemplo |
---|---|---|
Imagem |

|
![]() |
Para um notebook que demonstra esses exemplos de Markdown, consulte a seção Células de Markdown do notebook de histórias de dados visuais.
Compreensão das saídas de células¶
Ao executar uma célula Python, o notebook exibe os seguintes tipos de saída da célula nos resultados:
Quaisquer resultados gravados no console, como logs, erros e avisos e saídas de instruções print().
DataFrames são impressos automaticamente com a exibição de tabela interativa do Streamlit,
st.dataframe()
.Os tipos de exibição compatíveis com DataFrame incluem pandas DataFrame, Snowpark DataFrames e tabelas Snowpark.
Para o Snowpark, DataFrames impressos são avaliados imediatamente, sem a necessidade de executar o comando
.show()
. Se você preferir não avaliar o DataFrame imediatamente, por exemplo, ao executar o notebook no modo não interativo, o Snowflake recomenda remover as instruções de impressão DataFrame para acelerar o tempo de execução geral do código do Snowpark.
As exibições são renderizadas em saídas. Para saber mais sobre como visualizar seus dados, consulte Visualização de dados no Snowflake Notebooks.
Além disso, você pode acessar os resultados de sua consulta SQL em Python e vice-versa. Consulte Células de referência e variáveis nos Snowflake Notebooks.
Limites de saída da célula¶
Apenas 10.000 linhas ou 8 MB da saída do DataFrame são mostrados como resultados de célula, o que for menor. No entanto, todo o DataFrame ainda permanece disponível para uso na sessão do notebook. Por exemplo, mesmo que o DataFrame inteiro não seja renderizado, você ainda pode executar tarefas de transformação de dados.
Para cada célula, são permitidos apenas 20 MB de saída. Se o tamanho da saída da célula exceder 20 MB, a saída será descartada. Se isso acontecer, considere a possibilidade de dividir o conteúdo em várias células.
Células de referência e variáveis nos Snowflake Notebooks¶
Você pode referenciar os resultados das células anteriores em uma célula do notebook. Por exemplo, para referenciar o resultado de uma célula SQL ou o valor de uma variável Python, consulte as seguintes tabelas:
Nota
O nome da célula da referência diferencia maiúsculas de minúsculas e deve corresponder exatamente ao nome da célula referenciada.
Saída de referência SQL em células Python:
Tipo de célula de referência |
Tipo de célula atual |
Sintaxe de referência |
Exemplo |
---|---|---|---|
SQL |
Python |
|
Converter uma tabela de resultados SQL em um Snowpark DataFrame. Se você tiver o seguinte em uma célula SQL nomeada SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Você pode referenciar a célula para acessar o resultado SQL: snowpark_df = cell1.to_df()
Converta o resultado em um pandas DataFrame: my_df = cell1.to_pandas()
|
Referência de variáveis em código SQL:
Importante
No código SQL, você só pode referenciar variáveis Python do tipo string
. Você não pode referenciar um Snowpark DataFrame, pandas DataFrame ou outro formato DataFrame nativo do Python.
Tipo de célula de referência |
Tipo de célula atual |
Sintaxe de referência |
Exemplo |
---|---|---|---|
SQL |
SQL |
|
Por exemplo, em uma célula SQL nomeada SELECT * FROM {{cell2}} where PRICE > 500
|
Python |
SQL |
|
Por exemplo, em uma célula Python nomeada Como usar a variável Python como um valor c = "USA"
É possível fazer referência ao valor da variável SELECT * FROM my_table WHERE COUNTRY = '{{c}}'
Como usar a variável Python como um identificador Se a variável Python representar um identificador SQL, como um nome de coluna ou tabela: column_name = "COUNTRY"
Se a variável Python representar um identificador SQL, como o nome de uma coluna ou tabela ( SELECT * FROM my_table WHERE {{column_name}} = 'USA'
Certifique-se de diferenciar entre variáveis usadas como valores (com aspas) e como identificadores (sem aspas). Observação: a referência ao Python DataFrames não é compatível. |
Considerações para execução de notebooks¶
Os notebooks são executados usando os direitos do chamador. Para considerações adicionais, consulte Alteração do contexto de sessão para um notebook.
Você pode importar bibliotecas Python para usar em um notebook. Para obter mais detalhes, consulte Importação de pacotes Python para uso em notebooks.
Ao referenciar objetos em células SQL, você deve usar os nomes de objetos totalmente qualificados, a menos que esteja referenciando nomes de objetos em um banco de dados ou esquema especificado. Consulte Alteração do contexto de sessão para um notebook.
Os rascunhos do notebook são salvos a cada três segundos.
Você pode usar a integração com o Git para manter versões do notebook.
É possível configurar um tempo limite de inatividade para encerrar automaticamente a sessão do notebook quando essa configuração for atingida. Para obter mais informações, consulte Tempo ocioso e reconexão.
Os resultados das células do notebook são visíveis apenas para o usuário que executou o notebook e são armazenados em cache em todas as sessões. A reabertura de um notebook exibe os resultados anteriores da última vez que o usuário executou o notebook usando o Snowsight.
BEGIN … END (Script Snowflake) não é compatível em células SQL. Em vez disso, use o método Session.sql().collect() em uma célula Python para executar o bloco de script. Encadeie a chamada
sql
com uma chamada paracollect
para executar imediatamente a consulta SQL.O código a seguir executa um bloco de script Snowflake usando o método
session.sql().collect()
:from snowflake.snowpark.context import get_active_session session = get_active_session() code_to_run = """ BEGIN CALL TRANSACTION_ANOMALY_MODEL!DETECT_ANOMALIES( INPUT_DATA => SYSTEM$REFERENCE('TABLE', 'ANOMALY_INFERENCE'), TIMESTAMP_COLNAME =>'DATE', TARGET_COLNAME => 'TRANSACTION_AMOUNT', CONFIG_OBJECT => {'prediction_interval': 0.95} ); LET x := SQLID; CREATE TABLE ANOMALY_PREDICTIONS AS SELECT * FROM TABLE(RESULT_SCAN(:x)); END; """ data = session.sql(code_to_run).collect(block=True);