Desenvolvimento e execução de código nos Snowflake Notebooks

Este tópico descreve como escrever e executar código nos 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.

Adicione novos botões de célula na parte inferior do notebook.

Você pode alterar a linguagem da célula a qualquer momento após ela ter sido criada usando um dos dois métodos:

Como mover células

Você pode mover uma célula arrastando e soltando-a com o mouse ou usando o menu de ações:

  1. (Opção 1) Passe o mouse sobre a célula existente que deseja mover. Selecione o ícone de arrastar e soltar com o mouse e mova a célula para seu novo local.

    Arraste e solte para mover células.
  2. (Opção 2) Selecione o menu de reticências verticais mais ações para planilha (ações). Em seguida, selecione a ação apropriada.

    Menu de ação para mover células.

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:

  1. Selecione o menu de reticências verticais mais ações para planilha (mais ações).

  2. Selecione Delete.

  3. 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.

Execução de células Python e SQL nos 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.

    • Pressione CMD + Return em um teclado Mac, ou CTRL + Enter em um teclado Windows.

    • Selecione Execute somente esta célula ou Run this cell only.

  • 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.

    • Pressione Shift + Return em um teclado Mac, ou Shift + Enter em um teclado Windows.

    • Selecione o menu de reticências verticais (mais ações) para uma célula e escolha Run cell and advance.

  • Executar tudo acima: escolha esta opção ao executar uma célula que faça referência aos resultados de células anteriores.

    • Selecione o menu de reticências verticais (mais ações) para uma célula e escolha Run all above.

  • 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.

    • Selecione o menu de reticências verticais (mais ações) para uma célula e escolha Run all below.

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 – Indica que uma célula foi modificada, mas ainda não foi executada.

  • Vermelho – Ocorreu um erro.

  • Verde – A execução foi bem-sucedida.

  • Verde em movimento – A célula está em execução no momento.

  • Cinza piscando – A célula está aguardando para ser executada. Esse status ocorre quando várias células são acionadas para execução.

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 este texto para ver a janela de detalhes da execução. Você pode visualizar os detalhes da execução, incluindo os horários de início e término da execução 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.

Janela de detalhes da execução da célula.

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, selecione o botão de parar no canto superior direito da célula.

Isso interromperá a execução da célula que está em execução no momento e de todas as células subsequentes que foram agendadas para execução.

Como formatar texto com Markdown

Para incluir Markdown em seu notebook, adicione uma célula Markdown:

  1. Use um atalho de teclado e selecione Markdown ou + Markdown.

  2. 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.

Captura de tela de uma célula Markdown mostrando texto Markdown com um cabeçalho H1 indicado com um # e um cabeçalho “An example Markdown cell” (Um exemplo de célula Markdown) seguido pelo corpo de texto “This is an example Markdown cell” (Este é um exemplo de célula Markdown) em um notebook Snowflake. Abaixo do conteúdo Markdown bruto, o Markdown renderizado aparece com uma fonte diferente.

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

Captura de tela de uma célula Markdown que está mostrando apenas o Markdown renderizado: um cabeçalho “An example Markdown cell” (Um exemplo de célula Markdown) e o corpo de texto “This is an example Markdown cell” (Este é um exemplo de célula Markdown) em um notebook Snowflake.

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
Copy
Cabeçalho um em Markdown

2º nível

## 2nd-level Header
Copy
Cabeçalho um em Markdown

3º nível

### 3rd-level Header
Copy
Cabeçalho um em Markdown

Formatação de texto em linha

Formato de texto

Sintaxe Markdown

Exemplo

Itálico

*italicized text*
Copy
Texto em itálico em Markdown

Negrito

**bolded text**
Copy
Texto em negrito em Markdown

Link

[Link text](url)
Copy
Link em Markdown

Listas

Tipo de lista

Sintaxe Markdown

Exemplo

Lista ordenada

1. first item
2. second item
  1. Nested first
  2. Nested second
Copy
Lista ordenada em Markdown

Lista não ordenada

- first item
- second item
  - Nested first
  - Nested second
Copy
Lista não ordenada em Markdown

Formatação de código

Linguagem

Sintaxe Markdown

Exemplo

Python

```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
Copy
Trecho de código Python em Markdown

SQL

```sql
SELECT * FROM MYTABLE
```
Copy
Trecho de código SQL em Markdown

Incorporar imagens

Tipo de arquivo

Sintaxe Markdown

Exemplo

Imagem

![<alt_text>](<path_to_image>)
Copy
Imagem incorporada em Markdown

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, os seguintes tipos de saída de célula são exibidos nos resultados:

  • Quaisquer resultados gravados no console, como print(), logs, erros e avisos.

  • Os DataFrames são impressos automaticamente com a exibição de tabela interativa do Streamlit, st.dataframe().

    • Os tipos de exibição de dataframe compatíveis incluem pandas DataFrame, Snowpark DataFrames e tabelas Snowpark.

    • Para Snowpark, os DataFrames impressos são avaliados imediatamente, sem a necessidade de chamar .show(). Se você preferir não avaliar o dataframe imediatamente, por exemplo, ao executar o notebook no modo não interativo, Snowflake recomenda remover as instruções de impressão do DataFrame para acelerar o tempo de execução geral do código Snowpark.

  • As exibições são renderizadas em saídas. Para saber mais sobre como visualizar seus dados nos Snowflake Notebooks, 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.

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

cell1

Converter uma tabela de resultados SQL em um Snowpark DataFrame.

Se você tiver o seguinte em uma célula SQL nomeada cell1:

SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Copy

Você pode referenciar a célula para acessar o resultado SQL:

snowpark_df = cell1.to_df()
Copy

Converta o resultado em um pandas DataFrame:

my_df = cell1.to_pandas()
Copy

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

{{cell2}}

Por exemplo, em uma célula SQL nomeada cell1, referencie os resultados da célula de cell2:

SELECT * FROM {{cell2}} where PRICE > 500
Copy

Python

SQL

{{variable}}

Por exemplo, em uma célula Python nomeada cell1:

c = "USA"
Copy

Você pode referenciar o valor da variável c em um célula SQL nomeada cell2 referenciando a variável:

SELECT * FROM my_table WHERE COUNTRY = {{c}}
Copy

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.

  • Após uma hora de inatividade (sem edição de código ou execução de consultas), o kernel do notebook será desligado. A Snowflake também recomenda que você verifique os parâmetros do seu warehouse. Se STATEMENT_TIMEOUT_IN_SECONDS ou STATEMENT_QUEUED_TIMEOUT_IN_SECONDS for definido como um valor pequeno, o notebook poderá desligar ou não iniciar.

  • Você pode usar a integração com o Git para manter versões do notebook.

  • Os resultados das células do notebook são armazenados em cache entre as sessões. Reabrir um notebook exibe os resultados anteriores da última vez que você executou o notebook usando a UI. Os resultados armazenados em cache só são visíveis para o mesmo usuário que executou o notebook.

  • 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 para collect 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);
    
    Copy

Próxima etapa