Configuração de Snowflake Notebooks¶
Snowflake Notebooks são objetos de primeira classe armazenados em um esquema em um banco de dados. Eles podem ser executados em duas arquiteturas de computação: warehouses e contêineres. Este tópico fornece as etapas para configurar sua conta como administrador e começar a usar o Snowflake Notebooks.
Configuração do administrador¶
Para configurar sua organização usando Snowflake Notebooks, execute as etapas a seguir:
Analise os requisitos de conta e implementação¶
Certifique-se de que *.snowflake.app
esteja na lista de permissões de sua rede, incluindo sistemas de filtragem de conteúdo, e que possa se conectar ao Snowflake. Quando este domínio está na lista de permissões, seus aplicativos podem se comunicar com os servidores Snowflake sem quaisquer restrições.
Além disso, para evitar problemas de conexão com o backend do Snowflake, certifique-se de que os WebSockets não estão bloqueados na sua configuração de rede.
Aceitação dos termos do Anaconda para importar bibliotecas¶
Antes de começar a usar os pacotes fornecidos pelo Anaconda dentro do Snowflake, você deve reconhecer os Termos de ofertas externas.
Nota
É necessário usar a função ORGADMIN para aceitar os termos. Você só precisa aceitar os Termos de ofertas externas uma vez para sua conta Snowflake. Se você não tiver a função ORGADMIN, consulte Ativação da função ORGADMIN em uma conta.
Faça login na Snowsight.
Selecione Admin » Billing & Terms.
Na seção Anaconda, selecione Enable.
Na caixa de diálogo Anaconda Packages, clique no link para rever a página Termos de ofertas externas.
Se você concordar com os termos, selecione Acknowledge & Continue.
Se você encontrar um erro ao tentar aceitar os Termos de ofertas externas, isso pode ser devido à falta de informações em seu perfil de usuário, como nome, sobrenome ou endereço de e-mail.
Criação de recursos e concessão de privilégios¶
Para criar um notebook, uma função precisa de privilégios nos seguintes recursos:
Privilégio CREATE NOTEBOOK em um local
Privilégio USAGE em recursos de computação
(Opcional) Privilégio USAGE em integrações de acesso externo (EAIs)
Consulte Modelo para configuração do Notebooks para ver exemplos de scripts de criação e concessão de permissões nesses recursos.
Local¶
O local é onde um objeto de notebook é armazenado. O usuário final pode consultar qualquer banco de dados e esquema a que sua função tenha acesso.
Para alterar o contexto para um banco de dados ou esquema diferente, use os comandos USE DATABASE ou USE SCHEMA em uma célula SQL.
No tempo de execução do contêiner, a função que cria o notebook também exige o privilégio CREATE SERVICE no esquema.
Privilégio |
Objeto |
---|---|
USAGE |
Banco de dados |
USAGE |
Esquema |
CREATE NOTEBOOK |
Esquema |
CREATE SERVICE |
Esquema |
As funções que possuem um esquema automaticamente têm o privilégio de criar notebooks dentro desse esquema, pois os proprietários podem criar qualquer tipo de objeto, inclusive notebooks.
Privilégio |
Objeto |
---|---|
USAGE |
Banco de dados |
OWNERSHIP |
Esquema |
Recursos de computação¶
No tempo de execução do warehouse, o mecanismo de um notebook e os processos Python do código criado no notebook são executados no warehouse do Notebook, mas as consultas SQL e as consultas push down do Snowpark são executadas no warehouse de consultas. A função de proprietário do notebook requer o privilégio USAGE em ambos os warehouses.
Se um notebook for executado no tempo de execução do contêiner, a função precisará do privilégio USAGE em um pool de computação em vez do warehouse de Notebook. Os pools de computação são máquinas virtual baseadas em CPU ou GPU gerenciadas pelo Snowflake. Ao criar um pool de computação, defina o parâmetro MAX_NODES como maior que um, pois cada notebook exigirá um nó completo para ser executado. Para obter mais informações, consulte Snowpark Container Services: como trabalhar com pools de computação.
Privilégio |
Objeto |
---|---|
USAGE |
Warehouse de notebook ou pool de computação |
USAGE |
Warehouse de consulta |
Integrações de acesso externo (opcional)¶
Se você permitir que determinadas funções acessem uma rede externa, use a função ACCOUNTADMIN para configurar e conceder o privilégio USAGE em integrações de acesso externo (EAIs). EAIs permitem o acesso a pontos de extremidade externos específicos para que suas equipes possam baixar dados e modelos, enviar solicitações e respostas de API, fazer login em outros serviços etc. Para notebooks executados em tempo de execução de contêineres, as EAIs também permitem que suas equipes instalem pacotes de repositórios como PyPi e Hugging Face.
Para obter detalhes sobre como configurar EAI para o seu notebook, consulte Configurar acesso externo para o Snowflake Notebooks.
Privilégio |
Objeto |
---|---|
USAGE |
Integração de acesso externo |
Modelo para configuração do Notebooks¶
Como os notebooks são objetos com privilégios de criação e propriedade baseados em funções, é possível configurar o acesso ao recurso Notebooks de acordo com as necessidades de sua organização e equipe. Aqui estão alguns exemplos:
Como permitir que todos criem notebooks em um local específico¶
As etapas a seguir descrevem como configurar o acesso para a criação de notebooks em um local específico, concedendo o uso em um banco de dados e esquema. Como alternativa, é possível ativar notebooks privados, que não exigem essas concessões de acesso. Para obter mais informações sobre notebooks privados, consulte Notebooks particulares.
Substitua <database> e <database.schema> pelo banco de dados e esquema específicos em que você deseja criar os notebooks:
----------------------------------
-- Location Setup --
----------------------------------
GRANT USAGE ON DATABASE <database> TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA <database.schema> TO ROLE PUBLIC;
GRANT CREATE NOTEBOOK ON SCHEMA <database.schema> TO ROLE PUBLIC;
-- For Notebooks on Container runtime, run the following:
GRANT CREATE SERVICE ON SCHEMA <database.schema> TO ROLE PUBLIC;
----------------------------------
-- Compute Resource Setup --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> TO ROLE PUBLIC;
-- For Notebooks on Container runtime:
CREATE COMPUTE POOL CPU_XS
MIN_NODES = 1
MAX_NODES = 15
INSTANCE_FAMILY = CPU_X64_XS;
CREATE COMPUTE POOL GPU_S
MIN_NODES = 1
MAX_NODES = 5
INSTANCE_FAMILY = GPU_NV_S;
GRANT USAGE ON COMPUTE POOL CPU_XS TO ROLE PUBLIC;
GRANT USAGE ON COMPUTE POOL GPU_S TO ROLE PUBLIC;
-------------------------------------
-- Optional: External Access --
-------------------------------------
-- Example EAI
CREATE OR REPLACE NETWORK RULE allow_all_rule
MODE = 'EGRESS'
TYPE = 'HOST_PORT'
VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80');
CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION allow_all_integration
ALLOWED_NETWORK_RULES = (allow_all_rule)
ENABLED = true;
GRANT USAGE ON INTEGRATION allow_all_integration TO ROLE PUBLIC;
Criação de uma função dedicada¶
Se quiser que apenas usuários específicos criem notebooks (supondo que eles ainda não sejam OWN de nenhum esquema), é possível criar uma função dedicada para controlar o acesso. Por exemplo:
CREATE ROLE notebooks_rl;
Conceda ROLE notebook_rl a usuários específicos. Em seguida, use o script acima para criar recursos e conceder permissões a essa função (substitua ROLE PUBLIC por ROLE notebook_rl).
Mecanismo de notebook¶
O mecanismo de notebook («kernel») e os processos Python são executados no warehouse do Notebook. A Snowflake recomenda que você comece com um warehouse X-Small para minimizar o consumo de crédito.
Enquanto você estiver usando o notebook (por exemplo, editando código, executando, reordenando ou excluindo células), ou se o notebook permanecer ativo dentro da configuração de tempo limite de inatividade, uma consulta EXECUTE NOTEBOOK será executada continuamente para indicar que o mecanismo do notebook está ativo e que uma sessão de notebook está em uso. É possível verificar o status dessa consulta em Query history. Enquanto EXECUTE NOTEBOOK estiver em execução, o warehouse do notebook também estará em execução. Quando EXECUTE NOTEBOOK for concluído, se não houver outras consultas ou trabalhos em execução no warehouse, ele será encerrado de acordo com sua política de suspensão automática.
Para encerrar a consulta EXECUTE NOTEBOOK (encerrar a sessão do notebook), siga estas etapas:
Selecione Active ou selecione End session no menu suspenso Active.
Em Query history, encontre a consulta EXECUTE NOTEBOOK correspondente e selecione Cancel query.
Deixe o notebook atingir o tempo limite devido à inatividade com base em sua configuração de tempo ocioso. Se os parâmetros STATEMENT_TIMEOUT_IN_SECONDS e STATEMENT_QUEUED_TIMEOUT_IN_SECONDS no warehouse do notebook forem definidos para um valor pequeno, o notebook poderá ser desligado rapidamente ou não iniciar, independentemente da atividade do usuário.
Consultas¶
SQL e as consultas do Snowpark (por exemplo, session.sql) são enviadas para o warehouse de consultas, que é usado sob demanda. Quando as consultas SQL e Snowpark terminam de ser executadas, o warehouse de consulta é suspenso se nenhum outro trabalho estiver sendo executado nele fora do notebook. Selecione o tamanho do warehouse que melhor atende às suas necessidades de desempenho de consulta. Por exemplo, você pode querer executar grandes consultas SQL ou realizar operações de computação intensiva usando o Snowpark Python que exige um warehouse maior. Para operações que exigem alto uso de memória, considere usar um warehouse otimizado para o Snowpark.
É possível alterar o warehouse de consultas em Notebook Settings. Como alternativa, é possível executar o seguinte comando em qualquer célula SQL do notebook para alterar o warehouse de consultas para todas as consultas subsequentes na sessão atual do notebook:
USE WAREHOUSE <warehouse_name>;

Tempo ocioso e reconexão¶
Cada notebook tem uma propriedade de tempo ocioso chamada IDLE_AUTO_SHUTDOWN_TIME_SECONDS com um valor padrão de 30 minutos. É possível configurar o tempo de inatividade de cada notebook no Snowsight.
Faça login no Snowsight.
Selecione Projects » Notebooks.
Selecione o menu de reticências verticais
para configurar um novo horário.
Selecione Notebook settings.
Reinicie manualmente a sessão para que o novo tempo ocioso entre em vigor.
O tempo ocioso é acumulado sempre que não há atividade do usuário, como edição de código, execução de células, reordenação de células ou exclusão de células. Cada vez que você retoma a atividade, o tempo de inatividade é reiniciado. Quando o tempo ocioso atinge a configuração de tempo limite, a sessão do notebook é automaticamente encerrada.
Antes do tempo limite de inatividade, a sessão do notebook permanecerá ativa até que o tempo limite de inatividade seja atingido, mesmo que o usuário atualize a página, visite outras partes do Snowsight ou desligue ou coloque o computador em modo de espera. Ao reabrir o mesmo notebook, o usuário se reconecta à mesma sessão, com todos os estados e variáveis da sessão preservados, o que lhe permite continuar trabalhando sem problemas. Observe, no entanto, que o estado dos widgets do Streamlit não será mantido.
Cada usuário individual que executa o mesmo notebook tem sua própria sessão independente. Elas não interferem umas nas outras.
Recomendações para otimização do custo¶
Como administrador de conta, considere as seguintes recomendações para controlar o custo de operação dos notebooks:
Peça às suas equipes que usem o mesmo warehouse (recomenda-se o X-Small) como um «warehouse de notebook» dedicado para executar as sessões de notebook e aumentar a simultaneidade. Observe que isso pode levar a inícios de sessão mais lentos (filas no warehouse) ou a erros de falta de memória se muitos notebooks forem executados simultaneamente.
Permita que suas equipes usem um warehouse com um valor STATEMENT_TIMEOUT_IN_SECONDS mais baixo para executar notebooks. Esse parâmetro do warehouse controla o tempo de duração de qualquer consulta, inclusive das sessões do notebook. Por exemplo, se o parâmetro for definido como 10 minutos, a sessão do notebook poderá ser executada por no máximo 10 minutos, independentemente de o usuário estar ativo na sessão do notebook durante esse tempo.
Peça às equipes que encerrem as sessões de notebook quando não tiverem a intenção de trabalhar ativamente na sessão.
Peça às suas equipes que minimizem a configuração de tempo limite de inatividade (por exemplo, 15 minutos) se não precisarem que a sessão seja executada por um longo período.
Como alternativa, abra um tíquete de suporte para definir um valor padrão para o tempo ocioso que se aplique a toda a sua conta. Esse valor ainda pode ser substituído no nível do notebook pelo proprietário do notebook.
Pré-requisitos para usar notebooks privados¶
Na Snowsight, é possível criar um notebook privado, de propriedade do usuário. Antes de criar e usar notebooks privados, um administrador com a função ACCOUNTADMIN deve concluir as seguintes tarefas:
Ative o recurso de banco de dados pessoal no nível da conta ou para usuários específicos. Os bancos de dados pessoais são objetos do Snowflake que possibilitam que os notebooks se comportem como notebooks privados. Para obter informações sobre como concluir essa tarefa, consulte as seções a seguir:
Se necessário, defina adequadamente as funções secundárias para os usuários que criarão notebooks privados. Para obter informações sobre a conclusão dessa tarefa, que pode depender da ativação de pacotes BCR recentes, consulte Ativação de todas as funções secundárias para usuários de notebooks privados.
Importante
Depois que o administrador tiver ativado os bancos de dados pessoais, os usuários afetados deverão sair e entrar novamente para ver o novo comportamento da interface do usuário.
Para obter detalhes sobre notebooks privados, consulte Notebooks particulares.
Ativação e desativação de notebooks privados para a conta¶
Para habilitar notebooks privados em uma conta Snowflake, use um comando ALTER ACCOUNT que defina o parâmetro ENABLE_PERSONAL_DATABASE como TRUE. Por exemplo:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
Você não pode alterar uma conta diferente; só pode alterar a conta atual. Para obter mais informações sobre esse comando, consulte ALTER ACCOUNT.
Se você precisar desativar os notebooks privados da conta, execute o mesmo comando, mas defina o parâmetro como FALSE. Por exemplo:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
Para verificar o valor atual do parâmetro ENABLE_PERSONAL_DATABASE, execute o seguinte comando SHOW PARAMETERS:
SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
Depois que o administrador ativar o parâmetro para a conta, o usuário deverá sair e entrar novamente. Em seguida, o usuário pode verificar se o banco de dados pessoal foi criado executando um comando USE DATABASE:
USE DATABASE USER$;
É possível nomear explicitamente o usuário atual especificando o prefixo USER$
seguido do nome de usuário de login. Por exemplo:
USE DATABASE USER$bobr;
Esses comandos são bem-sucedidos quando o banco de dados pessoal do usuário atual existe. O comando USE DATABASE retorna um erro se o banco de dados pessoal não existir (porque as tarefas de pré-requisito não foram concluídas) ou se não for o banco de dados pessoal do usuário atual. Por exemplo, se jlap
não for o usuário atual, a seguinte mensagem será exibida:
USE DATABASE USER$jlap;
ERROR: Insufficient privileges to operate on database 'USER$JLAP'
Nota
Os bancos de dados pessoais não têm um proprietário específico; eles são objetos de propriedade do sistema.
Você não pode criar bancos de dados pessoais por conta própria:
Eles são «criados lentamente» em segundo plano para os usuários existentes quando a conta é ativada para notebooks privados. Na primeira vez que um usuário executa um comando com resolução explícita de nome USER$, o banco de dados pessoal é criado. Por exemplo, a execução do comando USE DATABASE USER$ resulta na criação lenga do banco de dados pessoal para o usuário atual.
Ativação e desativação de notebooks privados para usuários individuais¶
Os administradores podem querer que usuários específicos da conta tenham acesso pessoal ao banco de dados, em vez de todos os usuários da conta. Para permitir o acesso de determinados usuários, use o comando ALTER USER para definir o parâmetro ENABLE_PERSONAL_DATABASE como TRUE para esses usuários. Por exemplo, habilite o acesso para três usuários:
ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
Se você ativar bancos de dados pessoais no nível da conta, poderá desativar bancos de dados pessoais para usuários individuais, conforme necessário. Para desativar os usuários, execute o mesmo comando, mas defina o parâmetro como FALSE. Por exemplo:
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
Se o usuário jlap
especificar o prefixo USER$
em qualquer comando, o comando falhará porque o banco de dados pessoal não existe.
NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.
Nota
Se você ativar e depois desativar bancos de dados pessoais para um usuário específico, ele perderá o acesso ao banco de dados pessoal criado, mas o banco de dados continuará existindo.
Como começar a usar notebooks adicionando dados¶
Antes de começar a usar Snowflake Notebooks, adicione os dados ao Snowflake.
Você pode adicionar dados ao Snowflake de várias maneiras:
Adicione dados de um arquivo CSV para uma tabela usando a interface da Web. Consulte Carregamento de dados usando a interface da Web.
Adicione dados de armazenamento em nuvem externo:
Para carregar dados do Amazon S3, consulte Carregamento em massa a partir do Amazon S3.
Para carregar dados do Google Cloud Storage, consulte Carregamento em massa a partir do Google Cloud Storage.
Para carregar dados do Microsoft Azure, consulte Carregamento em massa a partir do Microsoft Azure.
Adicione dados em massa programaticamente. Consulte Carregamento em massa a partir de um sistema de arquivo local.
Você também pode adicionar dados de outras maneiras. Consulte Visão geral do carregamento de dados para mais detalhes.