Executar e agendar notebooks no Workspaces

Agendando notebooks no Workspaces

Nota

Se você planeja agendar notebooks em um espaço de trabalho compartilhado, consulte Agendando em espaços de trabalho compartilhados, que explica como as execuções manuais (não interativas) e os cronogramas baseados em tarefas se comportam e quais privilégios se aplicam.

Ao implementar notebooks para produção, o Snowflake oferece uma funcionalidade nativa para gerenciar a implantação, a orquestração e o monitoramento. Você desenvolve e itera em notebooks interativamente no Workspaces dentro do Snowsight. O agendamento de um notebook implanta seu conteúdo em um objeto de produção chamado objeto de projeto de notebook (Notebook Project Object, NPO), que encapsula o conteúdo do espaço de trabalho (por exemplo, arquivos .ipynb, scripts Python e arquivos SQL). Os NPOs oferecem suporte a implantações com controle de versão e são objetos no nível do esquema (por exemplo, db_name.schema_name.npo_name).

Após a implantação, você poderá orquestrar a execução do notebook usando as tarefas do Snowflake (que executam o código do notebook de cima para baixo usando um tempo de execução e um conjunto de dependências consistentes) ou qualquer ferramenta de orquestração de terceiros. O Snowflake captura a telemetria de execução que é possível monitorar no Snowsight ou consulta programaticamente em uma tabela de eventos. Para obter mais informações, consulte Observabilidade e registro em log para Notebooks no Workspaces.

Objetos de projeto de notebook (NPOs)

Um NPO é um objeto no nível do esquema que atua como uma «unidade» pronta para produção em seu pipeline. Um projeto de notebook é vinculado a um espaço de trabalho ou uma área de preparação, e todos os arquivos do espaço de trabalho são copiados. Os NPOs são executados de forma não interativa e podem ser incorporados em uma tarefa para agendamento.

  • Posicionamento: os NPOs existem em um esquema específico dentro de um banco de dados (database_name.schema_name.npo_name).

  • Encapsulamento: quando você agenda um notebook, o NPO captura todo o diretório do espaço de trabalho para garantir que todas as dependências estejam disponíveis durante a execução.

  • Execução: você executa um NPO especificando um arquivo .ipynb principal (por exemplo, usando o parâmetro MAIN_FILE). O notebook principal pode chamar notebooks adicionais usando %run.

  • Cronograma: você pode criar vários objetos de tarefa que executam o mesmo NPO, permitindo vários cronogramas para o mesmo objeto de projeto de notebook.

Descobrindo os NPOs

NPOs são objetos de banco de dados padrão, portanto você pode usar comandos de metadados para auditar ou limpar tarefas agendadas.

Escopo

Comando

Contexto atual

SHOW NOTEBOOK PROJECTS;

Nível de banco de dados

SHOW NOTEBOOK PROJECTS IN DATABASE <database_name>;

Nível de esquema

SHOW NOTEBOOK PROJECTS IN SCHEMA <database_name>.<schema_name>;

Nível de conta

SHOW NOTEBOOK PROJECTS IN ACCOUNT;

Permissões e compartilhamento de NPOs

Para executar ou gerenciar um NPO, uma função deve ter os seguintes privilégios:

  • Local: USAGE ou OWNERSHIP no banco de dados e esquema que contém o NPO.

  • Acesso ao NPO: USAGE ou OWNERSHIP no NPO específico.

  • Computação: USAGE e MONITOR no warehouse e USAGE no pool de computação (para Container Runtime).

  • Cronograma: o privilégio EXECUTE TASK global no nível da conta é necessário se o NPO é acionado por uma tarefa.

  • Integrações de acesso externo: USAGE em quaisquer EAIs usadas pelo notebook.

  • Tarefas: quando o NPO é agendado por meio de uma tarefa, a função de proprietário da tarefa deve receber o privilégio USAGE em todos os objetos necessários (como NPOs, warehouses ou bancos de dados). A função de proprietário da tarefa também deverá ter privilégios para executar os comandos USE DATABASE e USE SCHEMA se o notebook definir o contexto de execução programaticamente.

Nota

Os NPOs usam os direitos do autor da chamada, em que o autor da chamada é o usuário (não a função). Quando você executa EXECUTE NOTEBOOK PROJECT diretamente no Snowsight, a execução usa a identidade do usuário que faz a chamada em vez da função ativa na sessão do Snowsight. O notebook é executado na própria sessão dedicada (separada da sessão do Snowsight), com a função padrão do usuário como a função primária e todas as funções secundárias ativadas. Isso significa que o notebook pode ser executado com todos os privilégios concedidos às funções do usuário.

Usando um NPO para agendar um notebook

Atualmente, há dois cenários possíveis para implantar e agendar notebooks. Em ambos os cenários, os notebooks devem ser empacotados no NPO. Cenário A é o agendamento de notebooks de um espaço de trabalho privado. Cenário B é a integração das ações do GitHub (ou de outro sistema de CI/CD) para automatizar a criação dos NPOs de uma área de preparação interna ou temporária, gerenciar o ciclo de vida por meio de atualizações com controle de versão e orquestrar a execução delas usando as tarefas do Snowflake.

Cenário

Tipo de espaço de trabalho

Método de agendamento

A: desenvolvimento individual

Privado

Permitido. Desenvolver em seu espaço de trabalho privado. Criar objetos de projeto de notebook (NPO) e agendar tarefas.

B: produção (CI/CD)

Integrado ao Git

Os arquivos do notebook são implantados em uma área de preparação interna ou temporária do GitHub usando as ações do GitHub (ou outras ferramentas de CI/CD), e um NPO é criado/atualizado usando essa área de preparação. A tarefa é executada no NPO.

Para conferir fluxos de trabalho detalhados referentes a cada cenário, consulte Agendando fluxos de trabalho por cenário.

Exibir as execuções de notebook agendadas

Você pode visualizar as tarefas agendadas em três lugares:

Pelo notebook

Para visualizar ou interagir com as execuções agendadas, é necessário usar uma função com acesso ao banco de dados e ao esquema em que o cronograma e o objeto de projeto foram criados.

  1. No menu de navegação, selecione Projects » Workspaces.

  2. Abra um notebook agendado.

  3. Na parte superior do editor de notebook, selecione Scheduled runs Ícone de execuções agendadas. Uma janela flutuante exibe as seguintes informações:

  • Todas as execuções agendadas para o notebook.

  • O próximo horário da execução agendada.

  • Status das execuções anteriores. Passe cursor do mouse sobre um indicador de status para ver detalhes como ID da consulta, horário da última execução, duração e status.

Pelo menu de ações

  • Open Run History: abre o objeto de projeto do notebook mostrando todas as execuções anteriores, incluindo status, duração, resultados, arquivo de origem, logs e métricas. A seleção do resultado de uma execução abre o notebook executado com a respectiva saída. Para obter mais informações, consulte Observabilidade e registro em log para Notebooks no Workspaces.

Pelo navegador de bancos de dados

Para visualizar o histórico de execuções de qualquer notebook agendado (incluindo aqueles implantados via CI/CD):

  1. No menu de navegação, selecione Catalog » Database Explorer.

  2. Selecione o banco de dados e o esquema com o objeto de projeto de notebook (NPO).

  3. Selecione NPO.

  4. Selecione Run history.

  5. Selecione uma execução a partir da qual visualizar a saída do notebook, junto com logs e métricas (quando disponíveis). Para obter mais informações, consulte Observabilidade e registro em log para Notebooks no Workspaces.

Nota

Para visualizar o histórico de execuções do notebook acionados pelo Airflow, faça login no Snowsight com o mesmo usuário que executa o Airflow.

Gerenciar tarefas agendadas

No popover Scheduled runs, você pode gerenciar suas tarefas agendadas selecionando as reticências (mais ações) sf-options-button ao lado de uma tarefa agendada:

  • Run now: aciona uma execução imediata da tarefa agendada.

  • Pause schedule: interrompe temporariamente a execução automática do cronograma. A tarefa permanece configurada, mas não será executada até ser retomada.

  • Delete: remove a tarefa agendada permanentemente. Você poderá criar um novo cronograma com configurações diferentes (como uma função ou local de banco de dados diferente) depois de excluir o cronograma existente.

Implantar atualizações em tarefas agendadas de notebook

Depois de editar um notebook, você deverá implantar suas alterações antes que as execuções agendadas usem a versão atualizada. A implantação garante a reprodutibilidade e impede que as tarefas agendadas executem um código diferente do que foi implantado pela última vez. Se esta for a primeira tarefa do notebook, e um notebook tiver alterações que exijam implantação, o ícone de cronograma (calendário) exibirá um indicador de relógio. Se já existir um cronograma, o ícone será um calendário com um relógio.

Após a modificação do código ou das células, o ícone indicará que há alterações não implantadas.

  • Selecione Deploy Changes.

    O Snowflake atualiza o objeto de projeto do notebook associado, e todas as tarefas agendadas para esse notebook usarão a versão recém-implantada na próxima execução.

Encontrar um objeto de projeto de notebook (NPO) no navegador de objetos

Cada notebook agendado cria automaticamente um NPO que armazena o código implantado, o histórico de execução e os artefatos. Você pode localizar esses objetos no navegador de objetos do Snowsight.

Para localizar um NPO no Snowsight, siga estas etapas:

  1. No menu de navegação, selecione Catalog » Database Explorer.

  2. Navegar até Database » Schema » Notebook Project Objects para visualizar todos os NPOs nesse esquema.

Como alternativa, você pode:

  1. Abrir o notebook relevante.

  2. Na parte superior do editor de notebook, selecione Scheduled runs Ícone de execuções agendadas.

  3. Selecione Open run history para abrir o NPO associado.

Visualizar o histórico de execução do notebook

Esta seção descreve como visualizar detalhes de execução e solucionar problemas de execuções de notebook após a criação de um cronograma. Se alguma etapa falhar durante a execução, o Snowflake interrompe a execução para impedir resultados downstream parciais ou inconsistentes.

Para visualizar o histórico de execução, siga estas etapas:

  1. No menu de navegação, selecione Projects » Workspaces.

  2. Abra o notebook com o histórico de execução que você deseja revisar.

  3. Na parte superior do editor de notebook, selecione Scheduled runs Ícone de execuções agendadas.

  4. Selecione View run history no menu suspenso.

Run History mostra as seguintes informações do objeto de projeto do notebook:

  • Resultados: visualize o notebook e a saída de execuções anteriores.

  • Tarefas: veja quais tarefas executaram o NPO.

  • Arquivo de origem: visualize o arquivo de notebook que foi executado.

  • Logs e métricas: visualize logs de execução e métricas de desempenho (certifique-se de ter habilitado o registro em log e as tabelas de eventos). Para obter mais informações, consulte Observabilidade e registro em log para Notebooks no Workspaces.

  • Detalhes da execução: horários de início e término, status da execução e detalhes de erro.

Agendando em espaços de trabalho compartilhados

Em um espaço de trabalho compartilhado, as execuções usam os mesmos blocos de construção que nos outros lugares do Workspaces: um objeto de projeto de notebook (Notebook Project Object, NPO) para código em pacote e tarefas do Snowflake para execução agendada.

O NPO e cada tarefa são objetos separados. Conceda privilégios explícitos para que os colaboradores possam trabalhar no espaço de trabalho, implantar no NPO, executar ou monitorar execuções e gerenciar tarefas.

Execução não interativa de um NPO (manual)

A execução não interativa de um NPO (manual) executa o projeto implantado remotamente (fora do editor de notebook) quando você emite SQL como EXECUTE NOTEBOOK PROJECT. Use este caminho para validação e testes pontuais depois da implantação no NPO.

  • Visibilidade: o acesso está vinculado à sessão individual do usuário.

  • Requisito: você deve ter USAGE ou OWNERSHIP noNPO para acionar uma execução não interativa (manual).

  • Onde visualizar o histórico: no Snowsight, use Database » Schema » o NPO.

Execução agendada (tarefas)

Para executar dentro de uma cadência, execute o NPO de uma tarefa do Snowflake. Crie ou gerencie o cronograma no Workspaces » Notebooks (ícone de calendário) ou com SQL em uma planilha.

  • Visibilidade: o acesso segue os privilégios de objeto de tarefa (proprietário comparado com monitorar ou operar).

  • Requisito: a função de execução deve ter USAGE no NPO e OWNERSHIP na tarefa para iniciar o cronograma.

  • Histórico de execução:

    • Com USAGE no NPO e OWNERSHIP na tarefa, um usuário pode visualizar o histórico de execução completo, incluindo os resultados.

    • Com USAGE no NPO e MONITOR ou OPERATE na tarefa, um usuário pode ver o status de sucesso ou falha, mas não pode visualizar o arquivo de resultados.

  • Arquivos de resultados: o acesso ao arquivo de saída do notebook para uma execução de tarefa requer OWNERSHIP na tarefa.

Permissões gerais de espaço de trabalho

  • Criação de objetos: requer a permissão VIEW no espaço de trabalho (ou um privilégio superior).

  • Implantação de alterações: com acesso de gravação a um espaço de trabalho compartilhado, você pode implantar alterações. Para que o cronograma execute a lógica atualizada, a função deve ter OWNERSHIP na tarefa e USAGE no NPO.

Cenários de permissão: execuções manuais não interativas e tarefas

A tabela a seguir resume quem pode visualizar o histórico de execução e os resultados das execuções não interativas (manuais) de NPO e das execuções de tarefas.

Tipo de execução

Função ou privilégio do usuário

Visualizar histórico de execução?

Visualizar resultados da execução?

Notas

Não interativa (manual)

Usuário que inicia a execução

Sim

Sim

Qualquer pessoa com OWNERSHIP ou USAGE no NPO pode executar e ver o próprio histórico.

Não interativa (manual)

Proprietário do NPO (usuário diferente)

Não

Não

Não é possível ver as execuções manuais não interativas de outro usuário.

Não interativa (manual)

USAGE no NPO sem propriedade (usuário diferente)

Não

Não

Não é possível ver as execuções manuais não interativas de outro usuário.

Tarefa

Proprietário da tarefa

Sim

Sim

Controle completo do ciclo de vida; pode ver o histórico e os resultados das execuções baseadas em tarefas.

Tarefa

Tarefa MONITOR/OPERATE

Sim

Não

Pode ver o status e os logs, mas não pode acessar o arquivo de saída (resultados).

Agendar um notebook usando tarefas

  1. No menu de navegação, selecione Projects » Workspaces.

  2. Execute o seguinte comando em um arquivo/planilha SQL:

-- Execute a notebook project using a task
CREATE OR REPLACE TASK <database_name>.<schema_name>.<name>
  WAREHOUSE = <string>
  SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
  -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
  -- Execute a notebook stored within a notebook project.
  EXECUTE NOTEBOOK PROJECT "<database_name>"."<schema_name>"."<project_name>"
    MAIN_FILE = 'notebook.ipynb'  -- Path to the notebook file
    COMPUTE_POOL = '<compute_pool_name>'
    RUNTIME = '<runtime_version>'  -- e.g. V2.2-CPU-PY3.11
    QUERY_WAREHOUSE = '<wh_name>'
    ARGUMENTS = '<string>'  -- Can pass a single string parsed in the notebook code
    REQUIREMENTS_FILE = '<path/to/requirements.txt>'  -- Pre-installs dependencies before the notebook runs
    EXTERNAL_ACCESS_INTEGRATIONS = ('integration_name');  -- e.g. ('http_eai', 's3_eai')

Depois de criar a tarefa, execute o seguinte comando para ativar o cronograma:

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;

Se uma tarefa falhar porque sua função ativa não tem os privilégios necessários, o Snowsight exibirá as mensagens de erro relevantes para que você possa corrigir as permissões ausentes.

Para sintaxe, parâmetros e exemplos, consulte EXECUTE NOTEBOOK PROJECT. Para obter informações sobre como passar parâmetros para notebooks agendados, consulte Execução de notebooks com parâmetros.

Nota

Para saber mais sobre uso de crédito, comportamento de tempo limite ocioso e gerenciamento de serviços de notebook, consulte Configurando a computação e Tempo limite ocioso.