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.

  1. Faça login na Snowsight.

  2. Selecione Admin » Billing & Terms.

  3. Na seção Anaconda, selecione Enable.

  4. Na caixa de diálogo Anaconda Packages, clique no link para rever a página Termos de ofertas externas.

  5. 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;
Copy

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;
Copy

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:

  1. Selecione Active ou selecione End session no menu suspenso Active.

  2. Em Query history, encontre a consulta EXECUTE NOTEBOOK correspondente e selecione Cancel query.

  3. 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>;
Copy
Diagrama de computação do notebook

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.

  1. Faça login no Snowsight.

  2. Selecione Projects » Notebooks.

  3. Selecione o menu de reticências verticais mais ações para planilha para configurar um novo horário.

  4. Selecione Notebook settings.

  5. 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:

  1. 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:

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

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;
Copy

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;
Copy

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$;
Copy

É 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;
Copy

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;
Copy
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;
Copy

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;
Copy

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:

Você também pode adicionar dados de outras maneiras. Consulte Visão geral do carregamento de dados para mais detalhes.