Trabalho com arquivos nos Snowflake Notebooks

Este tópico descreve como você pode carregar e acessar arquivos de seus Snowflake Notebooks.

Arquivos em ambientes de notebook

Quando você cria um novo notebook, dois arquivos são criados. Você pode vê-los em painel Files ao lado esquerdo do notebook. Os arquivos são armazenados em um estágio interno que representa seu ambiente de notebook. Os arquivos armazenados neste estágio interno são persistentes entre as sessões.

  • Arquivo do notebook principal: Por padrão, este é nomeado notebook_app.ipynb. Se seu notebook for criado a partir do Git ou carregado de outro arquivo .ipynb, o nome do arquivo pode ser diferente.

  • environment.yml: Este é um arquivo gerado automaticamente que descreve seu ambiente de notebook, como quais pacotes estão instalados.

Para inspecionar o conteúdo do arquivo, você pode selecionar o nome do arquivo e um pop-up aparecerá com uma versão preliminar do conteúdo do arquivo. Observe que os arquivos são somente leitura. Para modificar o conteúdo de um arquivo, você precisará baixá-lo, editá-lo localmente e depois carregar a cópia atualizada.

Sistema de arquivos temporário em um ambiente de notebook

Seu notebook tem um sistema de arquivos temporário que fica disponível durante uma sessão ativa. Todos os arquivos criados durante a sessão são salvos neste estágio temporário. Os arquivos no estágio temporário não estarão disponíveis depois que você sair da sessão atual do notebook.

O código a seguir cria um arquivo chamado myfile.txt e escreve algum texto nele:

with open("myfile.txt",'w') as f:
    f.write("abc")
f.close()
Copy

Você pode acessar este arquivo durante a mesma sessão em que ele foi criado.

Use o método listdir() para listar arquivos no estágio temporário:

import os
os.listdir()
Copy

Agora desconecte-se de sua sessão atual e reconecte-se. Experimente o método listdir() novamente e o arquivo myfile.txt não será listado.

Arquivos persistentes em todas as sessões do notebook

Para que seus arquivos sejam persistentes em todas as sessões do Notebook:

Armazene arquivos em um estágio Snowflake

Se você quiser que seus arquivos sejam persistentes entre sessões e referenciem os arquivos em diferentes notebooks, use um estágio Snowflake para armazená-los. Você pode carregar arquivos de sua máquina local para o estágio e usar operações de arquivo da Snowpark API para acessá-los a partir de seu notebook.

Exemplo

Este exemplo mostra como criar um estágio e armazenar e recuperar arquivos dele em seu notebook.

Para criar um estágio chamado permanent_stage, execute o seguinte código em um célula SQL:

CREATE OR REPLACE STAGE permanent_stage;
Copy

Em seguida, crie um arquivo chamado myfile.txt com algum texto e execute o seguinte código em uma célula Python:

with open("myfile.txt",'w') as f:
  f.write("abc")
f.close()
Copy

Observe que neste ponto, myfile.txt é armazenado no sistema de arquivos temporário do notebook. Para mover isso para o estágio, você pode usar a Snowpark API para carregar o myfile.txt para seu permanent_stage:

from snowflake.snowpark.context import get_active_session
session = get_active_session()

put_result = session.file.put("myfile.txt","@PERMANENT_STAGE", auto_compress= False)
put_result[0].status
Copy

Se você desconectar sua sessão e reconectar, poderá executar o seguinte código em uma célula SQL para ver se o arquivo ainda está lá:

LS @permanent_stage;
Copy

Como adicionar arquivos ao notebook do computador local

Você pode carregar arquivos do computador local para serem usados no notebook Snowflake.

  1. Faça login no Snowsight.

  2. Selecione Projects » Notebooks.

  3. Na aba Files, ao lado do explorador de objetos de banco de dados, selecione o ícone Adição de um bloco de painel e selecione os arquivos para upload.

  4. Navegue e selecione ou arraste e solte arquivos na caixa de diálogo.

  5. Selecione Upload para enviar seu arquivo.

Os arquivos enviados são salvos no estágio interno do notebook e são persistentes entre as sessões. Você pode referenciar arquivos enviados usando seus caminhos locais do arquivo do notebook. Consulte Referência a arquivos em notebooks.

Aviso

Se a sua sessão do notebook estiver ativa quando você carregar o arquivo, será necessário reiniciá-lo para que o arquivo carregado fique acessível. Este é um bug conhecido. A Snowflake recomenda adicionar todos os arquivos necessários antes de iniciar sua sessão para uso em seu notebook.

Sincronização com arquivos do Git

Se o notebook estiver conectado ao Git, todos os arquivos na mesma pasta Git de seu notebook serão exibidos na aba Files.

Para obter mais informações sobre como trabalhar com arquivos no Git, consulte Sincronização dos notebooks Snowflake com um repositório Git.

Referência a arquivos em notebooks

Cada arquivo no ambiente de notebook tem um caminho de estágio e um caminho local. Você pode usar esses caminhos para referenciar o arquivo no notebook.

Referência a caminho local com Python

Em geral, as bibliotecas Python usam o caminho local para o arquivo como referência ao arquivo. Por exemplo, o código a seguir acessa o arquivo data.csv carregado no mesmo diretório em que este notebook está sendo executado:

import pandas as pd
df = pd.read_csv("data.csv")
Copy

Referência a caminho de estágio com SQL

Com SQL, o Snowflake faz referência a arquivos com base no caminho de estágio. O caminho de estágio para um arquivo em seu notebook é baseado no seguinte formato:

snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/<file_name>
Copy

Para encontrar o caminho de estágio associado aos arquivos no estágio de seu notebook usando o menu Copy path:

  1. Faça login no Snowsight.

  2. Selecione Projects » Notebooks.

  3. Na aba Files, ao lado do explorador de objetos de banco de dados, selecione o ícone Mais opções ao lado do arquivo cujo caminho você deseja obter.

  4. Selecione Copy path. Isso copia o caminho de arquivo para sua área de transferência.

Em seguida, você pode usar a seguinte instrução SQL para listar os detalhes do arquivo de estágio:

LIST 'snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/data.csv'
Copy

Requisitos de controle de acesso

Você precisa usar uma função com os seguintes privilégios para acessar arquivos de um estágio em um notebook.

Privilégio

Objeto

USAGE

Estágio que contém os arquivos.

Limitações e considerações

  • Carregue os arquivos antes de iniciar sua sessão de notebook. Se você carregar arquivos após o início de uma sessão, será necessário reiniciá-la para acessar os arquivos.

  • Não há restrições quanto aos tipos de arquivo para upload.

  • O limite de tamanho por arquivo é de até 250 MB.

  • Os arquivos gravados em um caminho local no notebook não aparecem na UI Files. Este é um bug conhecido. No entanto, você ainda poderá usar o arquivo no código de seu notebook.

    Por exemplo, se você criar um arquivo, data.json, poderá acessá-lo conforme mostrado no código a seguir, mesmo que ele não esteja visível na UI Files:

    # Generate sample JSON file
    with open("data.json", "w") as f:
        f.write('{"fruit":"apple", "size":3.4, "weight":1.4},{"fruit":"orange", "size":5.4, "weight":3.2}')
    # Read from local JSON file (File doesn't show in UI)
    df = pd.read_json("data.json",lines=True)
    df
    
    Copy
  • A abertura de outro arquivo .ipynb que não seja o arquivo principal do notebook não é compatível.

Recursos adicionais