Introdução às tarefas

As tarefas usam funções definidas pelo usuário para automatizar e agendar processos empresariais. Com uma única tarefa, você pode executar de uma função simples até uma complexa em seu pipeline de dados. Com os gráficos de tarefa você pode reunir várias tarefas para criar pipelines de dados e lidar com casos de uso complexos. Você também pode combinar tarefas com fluxos de tabela para fluxos de trabalho ELT contínuos para processar dados alterados recentemente.

Uma tarefa pode executar qualquer um dos seguintes tipos de funções:

  • Instrução SQL única

  • Chamada de um procedimento armazenado

  • Lógica de procedimentos usando Script Snowflake

Você pode usar Tarefas acionadas com fluxos de tabela para fluxos de trabalho ELT contínuos para processar linhas de tabela alteradas recentemente.

As tarefas também podem ser usadas independentemente para gerar relatórios periódicos, inserindo ou mesclando linhas em uma tabela de relatório ou para realizar outros trabalhos periódicos. Para executar processos empresariais complexos com tarefas, considere usar gráficos de tarefas para encadear múltiplas tarefas.

Nota

Evolução do esquema da tabela não é compatível com tarefas.

Neste tópico:

Fluxo de trabalho de criação de tarefas

Esta seção fornece uma visão geral do fluxo de trabalho de configuração de tarefas.

  1. Crie uma função de administrador de tarefa que possa executar os comandos nas etapas a seguir.

  2. Crie uma tarefa usando CREATE TASK. A tarefa está suspensa por padrão. Revise as seções a seguir para obter mais informações sobre como a criação de tarefas:

  3. Teste suas tarefas usando a execução manual de tarefas.

  4. Execute ALTER TASK … RESUME para permitir que a tarefa seja executada com base nos parâmetros especificados na definição da tarefa. Revise as seções a seguir para obter mais informações sobre execuções de tarefas:

Recursos de computação

As tarefas exigem recursos de computação para executar código SQL. Qualquer um dos modelos de computação a seguir pode ser escolhido para tarefas individuais:

  • Modelo de computação sem servidor

  • Warehouse virtual gerenciado pelo usuário

Tarefas sem servidor

O modelo de computação sem servidor para tarefas permite que você conte com recursos de computação gerenciados pelo Snowflake em vez de warehouses virtuais gerenciados pelo usuário. O Snowflake redimensiona automaticamente os recursos de computação sem servidor conforme necessário para cada carga de trabalho. O Snowflake determina o tamanho ideal dos recursos de computação sem servidor para uma determinada execução com base em uma análise dinâmica de estatísticas para as execuções mais recentes da mesma tarefa. O tamanho máximo de computação para uma tarefa sem servidor é equivalente a um warehouse virtual gerenciado pelo usuário XXLARGE. Múltiplos carregamentos de trabalho em sua conta possuem um conjunto comum de recursos de computação.

Para usar o modelo de computação sem servidor, deixe de fora o parâmetro WAREHOUSE ao criar uma tarefa usando CREATE TASK. Note que a função que executa o comando CREATE TASK deve ter o privilégio global EXECUTE MANAGED TASK. Para obter mais informações sobre os requisitos de controle de acesso para tarefas, consulte Segurança de tarefas.

O faturamento de execuções de tarefas sem servidor é diferente do modelo de consumo de crédito padrão para tarefas que dependem de warehouses virtuais para recursos de computação. Para obter mais informações, consulte Custos da tarefa.

Tarefas gerenciadas pelo usuário

Você pode gerenciar os recursos de computação para tarefas individuais especificando um warehouse virtual existente ao criar a tarefa. Esta opção requer que você escolha um warehouse de tamanho adequado para as ações SQL que são executadas pela tarefa.

Escolha do tamanho de um warehouse

Se você optar por utilizar os warehouses existentes para fornecer os recursos de computação para tarefas individuais, siga as práticas recomendadas descritas em Considerações sobre warehouses. Para entender as necessidades de computação para sua tarefa, analise o tempo médio de execução para uma única tarefa ou gráfico de tarefa usando diferentes warehouses com base no tamanho do warehouse e no clustering. Você também deve considerar se o warehouse é compartilhado por vários processos.

Para analisar o tempo médio de execução de suas tarefas, consulte a exibição Account Usage TASK_HISTORY. A diferença média entre os tempos agendados e completados para uma tarefa é o tempo médio de execução esperado para a tarefa. Essa diferença inclui o tempo em que a tarefa ficou na fila enquanto outros processos estavam usando os recursos de computação no warehouse.

Para gráficos de tarefa, há um breve atraso após a conclusão da execução de uma tarefa anterior e o início de qualquer tarefa filho. Escolha um tamanho de warehouse grande o suficiente para acomodar várias tarefas filho secundárias executadas simultaneamente.

O diagrama a seguir mostra um período de 1 minuto no qual uma única tarefa ficou em fila por 20 segundos e depois foi executada por 40 segundos. Isso significa que outros processos estavam usando os recursos do warehouse nos primeiros 20 segundos após a tarefa ter sido agendada.

Exemplo de janela de lote de tarefas

O diagrama a seguir mostra um gráfico da tarefa que requer 5 minutos, em média, para ser completado em cada execução. O diagrama mostra a janela para a conclusão de 2 execuções do gráfico da tarefa. Esse período é calculado a partir do momento em que a tarefa raiz está agendada para começar até que a última tarefa filho tenha terminado de ser executada.

Neste exemplo, o warehouse no qual o gráfico de tarefa está sendo executado é compartilhado com outras operações simultâneas. Estas operações simultâneas consomem todos os recursos disponíveis quando cada tarefa no gráfico da tarefa termina e antes que a próxima tarefa comece a ser executada. Como resultado, a janela para cada tarefa inclui algum tempo de fila de espera enquanto aguarda que outras operações terminem e liberem os recursos de computação.

Exemplo de janela de lote do gráfico da tarefa

Recomendações para a escolha de um modelo de cálculo

A tabela a seguir descreve vários fatores que podem ajudar você a decidir quando usar tarefas sem servidor versus tarefas gerenciadas pelo usuário:

Categoria

Tarefas sem servidor

Tarefas gerenciadas pelo usuário

Notas

Número, duração e previsibilidade de cargas de trabalho de tarefas simultâneas

Recomendado para warehouses subutilizados com poucas tarefas sendo executadas simultaneamente ou concluídas rapidamente.

As tarefas com execuções relativamente estáveis são boas candidatas para tarefas sem servidor.

Recomendado para warehouses totalmente utilizados com múltiplas tarefas simultâneas.

Também recomendado para cargas imprevisíveis nos recursos de computação. Warehouses multicluster com suspensão automática e retomada automática habilitadas podem ajudar a reduzir seu consumo de crédito.

Para tarefas sem servidor, o Snowflake faz o faturamento sua conta com base no uso real dos recursos de computação.

Para tarefas gerenciadas pelo usuário, o faturamento dos warehouses é baseado no tamanho do warehouse, com um mínimo de 60 segundos cada vez que o warehouse é retomado.

Intervalo programado

Recomendado quando o cumprimento do intervalo programado é altamente importante.

Se a execução de uma tarefa autônoma ou de um gráfico de tarefa agendada exceder o intervalo, o Snowflake aumentará o tamanho dos recursos de computação.

Recomendado quando o cumprimento do intervalo programado é menos importante.

O intervalo do cronograma refere-se ao intervalo de tempo entre as execuções agendadas de uma tarefa autônoma ou tarefa raiz em um gráfico de tarefa.

Aumentar os recursos de computação pode reduzir o tempo de execução de alguns, mas não todos, códigos SQL, mas não garante que uma execução de tarefa seja concluída dentro da janela do lote.

O tamanho máximo para uma execução de tarefa sem servidor é equivalente a um warehouse XXLARGE. Se a carga de trabalho de uma tarefa exigir um warehouse maior, crie uma tarefa gerenciada pelo usuário com um warehouse do tamanho exigido.

Tarefas em execução

Esta seção descreve as diferentes maneiras pelas quais uma tarefa pode ser agendada e executada, como falhas de tarefa são tratadas e como a versão de uma tarefa é determinada.

Agendamento de tarefas

As tarefas geralmente são executadas de acordo com um cronograma. Você pode definir o cronograma ao criar uma tarefa usando CREATE TASK ou mais tarde usando ALTER TASK.

Uma tarefa autônoma ou a tarefa raiz em um gráfico da tarefa geralmente é executada de acordo com um cronograma. Você pode definir o cronograma ao criar uma tarefa usando CREATE TASK ou mais tarde usando ALTER TASK.

O Snowflake garante que apenas uma instância de uma tarefa com um cronograma seja executada por vez. Se uma tarefa ainda estiver em execução quando o próximo período de execução agendado ocorrer, esse tempo agendado é ignorado.

O Snowflake redimensiona automaticamente os recursos de computação para tarefas sem servidor. Para tarefas gerenciadas pelo usuário, escolha um tamanho de warehouse apropriado para que a tarefa conclua sua carga de trabalho dentro do cronograma. Para obter mais informações, consulte Escolha do tamanho de warehouse.

Agendamento de tarefas e horário de verão

A expressão cron em uma definição de tarefa suporta a especificação de um fuso horário. As tarefas agendadas durante a transição do horário padrão para o horário de verão, ou o inverso, podem ter comportamentos inesperados.

Por exemplo:

  • Durante a mudança do horário de verão para o horário padrão, uma tarefa agendada para começar à 1 AM no fuso horário de America/Los_Angeles (0 1 * * * America/Los_Angeles) seria executada duas vezes. Em 1 AM e então novamente à 1:59:59 AM muda para 1:00:00 AM hora local.

  • Durante a mudança do horário padrão para o horário de verão, uma tarefa agendada para começar às 2 AM no fuso horário de America/Los_Angeles (0 2 * * * America/Los_Angeles) não seria executada porque a hora local muda de 1:59:59 AM para 3:00:00 AM.

Para evitar execuções de tarefa inesperadas devido ao horário de verão, considere o seguinte:

  • Não agende tarefas para serem executadas entre 1 AM e 3 AM.

  • Ajuste manualmente a expressão cron para tarefas agendadas entre 1 AM e 3 AM duas vezes por ano para compensar a mudança de horário.

  • Utilize um formato de horário que não aplique o horário de verão, tal como UTC.

Tarefas acionadas

Você pode usar tarefas acionadas para serem executadas somente quando um fluxo definido tiver novos dados. Isso simplifica um caso de uso comum para consultar frequentemente uma fonte com disponibilidade imprevisível de novos dados e reduz a latência ao processar imediatamente quando há novos dados.

Tarefas acionadas não usam recursos de computação até que o fluxo definido tenha dados e acione a execução da tarefa.

A seguir estão as condições de execução para tarefas acionadas:

  • Quando os dados são alterados na tabela que o fluxo associado rastreia.

  • Quando a tarefa é retomada pela primeira vez, para consumir todos os dados já existentes no fluxo.

  • As tarefas acionadas executam automaticamente uma verificação de integridade a cada 12 horas para evitar que o fluxo fique desatualizado. Se não houver dados no fluxo, o Snowflake ignorará a execução sem usar recursos de computação.

Criação de tarefas acionadas

Para criar uma nova tarefa acionada, omita o parâmetro SCHEDULE e inclua o fluxo de destino na cláusula WHEN.

CREATE TASK triggeredTask  WAREHOUSE = my_warehouse
  WHEN system$stream_has_data('my_stream')
  AS
    INSERT INTO my_downstream_table
    SELECT * FROM my_stream;

ALTER TASK triggeredTask RESUME;
Copy

Para migrar uma tarefa existente de uma tarefa agendada para uma tarefa acionada, remova a definição do parâmetro SCHEDULE. A tarefa existente deve ter um fluxo de destino definido na cláusula WHEN.

ALTER TASK task SUSPEND;
ALTER TASK task UNSET SCHEDULE;
ALTER TASK task RESUME;
Copy

A seguir estão os detalhes e limitações dos parâmetros de tarefas acionadas:

  • Por padrão, as tarefas acionadas são executadas no máximo a cada 30 segundos. Você pode modificar o parâmetro USER_TASK_MINIMUM_TRIGGER_INTERVAL_IN_SECONDS para executá-las com mais frequência, até a cada 15 segundos.

  • As condições da tarefa acionada WHEN devem ser baseadas em alterações de dados.

  • O condicional when aceita o uso dos condicionais AND e OR. A condicional AND pode resultar em uma tarefa ignorada se apenas um dos fluxos definidos tiver dados.

Considerações sobre tarefas acionadas

A seguir estão detalhes sobre como gerenciar, configurar e monitorar tarefas acionadas:

  • Na saída SHOW TASKS e DESC TASK, as exibições de propriedade SCHEDULE NULL para tarefas acionadas.

  • Na saída da exibição task_history dos esquemas information_schema e account_usage, a coluna SCHEDULED_FROM exibe TRIGGER.

  • Se o fluxo ou a tabela que o fluxo está rastreando for descartado ou recriado, a tarefa acionada será suspensa automaticamente. Depois que a tabela ou fluxo for recriado, o usuário pode executar ALTER TASK <task_name> RESUME para retomar o processamento acionado.

Limitações das tarefas acionadas

A seguir estão as limitações das tarefas acionadas:

  • Fluxos em compartilhamentos de dados, tabelas de diretório, tabelas externas e tabelas híbridas não são aceitos.

  • Tarefas sem servidor não são compatíveis.

Execução manual de tarefas

O comando EXECUTE TASK aciona manualmente uma única execução de uma tarefa. Este comando SQL é útil para testar gráficos de tarefa autônomos novos ou modificados antes de habilitá-los para executar o código SQL na produção.

Você pode chamar este comando SQL diretamente em scripts ou em procedimentos armazenados. Além disso, este comando suporta a integração de tarefas em pipelines de dados externos. Qualquer serviço de terceiros que possa autenticar em sua conta Snowflake e autorizar ações SQL pode executar o comando EXECUTE TASK para executar tarefas.

Controle de versão de execuções de tarefas

Quando uma tarefa autônoma é retomada primeiro ou executada manualmente, uma versão inicial da tarefa é definida. A tarefa autônoma ou é executada utilizando esta versão. Após uma tarefa ser suspensa e modificada, uma nova versão é definida quando a tarefa autônoma é retomada ou executada manualmente.

Quando a tarefa é suspensa, todas as execuções agendadas futuras da tarefa são canceladas; no entanto, as tarefas em execução no momento continuam sendo executadas usando a versão atual.

Por exemplo, suponha que a tarefa esteja suspensa, mas uma execução agendada desta tarefa já tenha começado. O proprietário da tarefa modifica o código SQL chamado pela tarefa enquanto a tarefa ainda está em execução. A tarefa executa o código SQL em sua definição usando a versão da tarefa que era atual quando a tarefa raiz iniciou sua execução. Quando a tarefa é retomada ou executada manualmente, uma nova versão da tarefa é definida. Esta nova versão inclui as modificações da tarefa filho.

Para recuperar o histórico das versões de tarefas, consulte TASK_VERSIONS Exibição do Account Usage (no banco de dados SNOWFLAKE compartilhado).

Suspensão automática das tarefas após uma execução falhada

Opcionalmente, suspende as tarefas automaticamente após um número especificado de execuções consecutivas que falham ou ficam sem tempo. Este recurso pode reduzir custos suspendendo tarefas que consomem créditos do Snowflake, mas que não são executadas até a conclusão.

Defina o parâmetro SUSPEND_TASK_AFTER_NUM_FAILURES = num em uma tarefa. Quando o parâmetro é definido como um valor maior que 0, as tarefas são automaticamente suspensas após o número especificado de execuções consecutivas de tarefas falhar ou atingir o tempo limite.

O parâmetro pode ser definido ao criar uma tarefa usando CREATE TASK ou mais tarde usando ALTER TASK. Você também pode alterar esse valor no Snowsight.

O parâmetro SUSPEND_TASK_AFTER_NUM_FAILURES também pode ser definido no nível de conta, banco de dados ou esquema. A configuração se aplica a todas as tarefas contidas no objeto modificado. Observe que a definição explícita do parâmetro em um nível mais baixo sobrepõe-se ao valor do parâmetro definido em um nível mais alto.

Repetição automática das execuções de tarefa que falharam

Se alguma tarefa for concluída em um estado FAILED, o Snowflake poderá tentar repetir a execução da tarefa automaticamente. A nova tentativa automática de tarefa está desabilitada por padrão. Para habilitar esse recurso, defina TASK_AUTO_RETRY_ATTEMPTS para um valor maior que 0.

As tarefas que usam notificações de erro enviam notificações para cada tentativa de repetição com falha. Para obter mais informações, consulte Configuração de uma tarefa para enviar notificações de erro.

Quando você define o valor do parâmetro TASK_AUTO_RETRY_ATTEMPTS ao nível da conta, do banco de dados ou do esquema, a alteração é aplicada às tarefas contidas no objeto modificado durante sua próxima execução agendada.

Definição de parâmetros de sessão para tarefas

Você pode definir parâmetros para a sessão em que uma tarefa é executada. Para isso, modifique uma tarefa existente e defina os valores dos parâmetros desejados usando ALTER TASKSET session_parameter = value[, session_parameter = value ... ] ou edite a tarefa no Snowsight.

Uma tarefa oferece suporte a todos os parâmetros da sessão. Para a lista completa, consulte Parâmetros. As tarefas não oferecem suporte a parâmetros de conta ou usuário.

Visualização do histórico de tarefas para sua conta

Você pode visualizar o histórico de tarefas de sua conta usando SQL ou Snowsight. Para ver o histórico de tarefas em Snowsight, consulte Visualização de tarefas e gráficos de tarefa no Snowsight. Para obter mais informações sobre os privilégios necessários, consulte Visualização do histórico de tarefas.

Para ver o histórico de execução de uma única tarefa:

SQL:

Consulte a função de tabela TASK_HISTORY (no Snowflake Information Schema).

Para ver os detalhes de uma execução do gráfico da tarefa que está agendada ou em execução:

SQL:

Consulte a função de tabela CURRENT_TASK_GRAPHS (no Snowflake Information Schema).

Para ver o histórico de execuções do gráfico da tarefa que foram executadas com sucesso, falharam ou foram canceladas nos últimos 60 minutos:

SQL:

Consulte a função de tabela COMPLETE_TASK_GRAPHS (no Snowflake Information Schema).

Consulte a exibição Exibição COMPLETE_TASK_GRAPHS (no Account Usage).

Custos da tarefa

Os custos associados à execução de uma tarefa para executar código SQL diferem dependendo da fonte dos recursos de computação para a tarefa:

Warehouse gerenciado pelo usuário

O Snowflake fatura sua conta por uso de crédito baseado no uso do warehouse enquanto uma tarefa está em execução, semelhante ao uso do warehouse para executar as mesmas instruções SQL em um cliente ou na interface da Web do Snowflake. O faturamento de crédito por segundo e a suspensão automática do warehouse lhe dão a flexibilidade de começar com tamanhos de warehouse maiores e depois ajustar o tamanho para corresponder às cargas de trabalho de suas tarefas.

Modelo de computação sem servidor

O Snowflake cobra sua conta com base no uso de recursos de computação. As cobranças são calculadas com base em seu uso total dos recursos, incluindo o uso do serviço de nuvem, medido em uso de créditos de horas de computação. O custo das horas de computação muda com base no tamanho do warehouse e no tempo de execução da consulta. Para obter mais informações, consulte Uso de crédito sem servidor ou Consulta: Custo total da tarefa.

O Snowflake analisa execuções de tarefa no histórico de tarefas para determinar dinamicamente o tamanho e o número corretos de recursos de computação sem servidor. Conforme o Snowflake aumenta e diminui automaticamente os recursos para gerenciar suas execuções de tarefa, o custo para executá-las é dimensionado proporcionalmente.

Para saber quantos créditos são consumidos pelas tarefas, consulte a “Tabela de crédito de recursos sem servidor” na Tabela de consumo de serviços do Snowflake.

Considere as seguintes práticas recomendadas para otimizar custos ao criar tarefas:

  • Defina SCHEDULE para executar com menos frequência.

  • Use os parâmetros de suspensão automática e repetição automática para evitar desperdício de recursos em tarefas com falha.

  • Crie um orçamento e um alerta sobre limites de gastos para recursos sem servidor. Para obter mais informações, consulte Monitorar o uso de crédito com orçamentos.

Para recuperar o uso de créditos atual para uma tarefa específica, consulte a função de tabela SERVERLESS_TASK_HISTORY. Execute a seguinte instrução como proprietário da tarefa, onde <database_name> é o banco de dados que contém a tarefa e <task_name> é o nome da tarefa:

SET num_credits = (SELECT SUM(credits_used)
  FROM TABLE(<database_name>.information_schema.serverless_task_history(
    date_range_start=>dateadd(D, -1, current_timestamp()),
    date_range_end=>dateadd(D, 1, current_timestamp()),
    task_name => '<task_name>')
    )
  );
Copy

Para recuperar o uso de créditos atual para todas as tarefas sem servidor, consulte a exibição SERVERLESS_TASK_HISTORY. Execute a seguinte instrução como administrador de conta:

SELECT start_time,
  end_time,
  task_id,
  task_name,
  credits_used,
  schema_id,
  schema_name,
  database_id,
  database_name
FROM snowflake.account_usage.serverless_task_history
ORDER BY start_time, task_id;
Copy

Segurança de tarefas

Para começar a executar tarefas, você precisa ter os privilégios de acesso corretos. Esta seção descreve como gerenciar o acesso às tarefas.

Para obter mais informações sobre a propriedade do gráfico de tarefa, consulte Gerenciamento da propriedade do gráfico de tarefa.

Privilégios de controle de acesso

Criação de tarefas

A criação de tarefas requer uma função com um mínimo dos seguintes privilégios:

Objeto

Privilégio

Notas

Conta

EXECUTE MANAGED TASK

Necessário apenas para tarefas que dependem de recursos de computação sem servidor.

Banco de dados

USAGE

Esquema

USAGE, CREATE TASK

Warehouse

USAGE

Necessário apenas para tarefas que dependem de warehouses gerenciados pelo usuário.

Tarefas em execução

Após a criação de uma tarefa, o proprietário da tarefa deverá ter os seguintes privilégios para que a tarefa seja executada:

Objeto

Privilégio

Notas

Conta

EXECUTE TASK

Requerido para executar quaisquer tarefas que a função possua. A revogação do privilégio EXECUTE TASK em uma função impede que todas as tarefas subsequentes sejam iniciadas sob essa função.

Conta

EXECUTE MANAGED TASK

Necessário apenas para tarefas que dependem de recursos de computação sem servidor.

Banco de dados

USAGE

Esquema

USAGE

Tarefa

USAGE

Warehouse

USAGE

Necessário apenas para tarefas que dependem de warehouses gerenciados pelo usuário.

Além disso, a função deve ter as permissões necessárias para executar a instrução SQL executada pela tarefa.

Visualização do histórico de tarefas

Para visualizar tarefas, é necessário ter um ou mais dos seguintes privilégios:

  • A função ACCOUNTADMIN

  • O privilégio OWNERSHIP na tarefa

  • O privilégio global MONITOR EXECUTION

Retomada ou suspensão de tarefas

Além do proprietário da tarefa, uma função que tenha o privilégio OPERATE para a tarefa pode suspender ou retomar a tarefa. Esta função deve ter o privilégio USAGE para o banco de dados e o esquema que contêm a tarefa. Nenhum outro privilégio é necessário.

Quando uma tarefa é retomada, o Snowflake verifica se a função do proprietário da tarefa tem os privilégios listados em Tarefas em execução.

Criação de funções personalizadas para gerenciar permissões de tarefas

Com as funções personalizadas, você pode gerenciar facilmente as permissões concedidas para cada conta ou função no Snowflake. Para fazer alterações nas permissões de todas as contas ou funções usando a função personalizada, atualize a função personalizada. Ou revogue as permissões removendo a função personalizada.

Criação de uma função personalizada para criar tarefas

O Snowflake requer permissões diferentes para criar tarefas sem servidor e gerenciadas pelo usuário.

Por exemplo, para criar tarefas gerenciadas pelo usuário, crie a função personalizada nomeada warehouse_task_creation e conceda a essa função os privilégios CREATE TASK e USAGE no warehouse em que a função pode criar tarefas.

USE SYSADMIN;

CREATE ROLE warehouse_task_creation
  COMMENT = 'This role can create user-managed tasks.';
Copy
USE ACCOUNTADMIN;

GRANT CREATE TASK
  ON SCHEMA schema1
  TO ROLE warehouse_task_creation;
Copy
GRANT USAGE
  ON WAREHOUSE warehouse1
  TO ROLE warehouse_task_creation;
Copy

Como exemplo de uma função que pode criar tarefas sem servidor; crie uma função personalizada nomeada serverless_task_creation e conceda à função o privilégio CREATE TASK e ao nível da conta o privilégio EXECUTE MANAGED TASK.

USE SYSADMIN;

CREATE ROLE serverless_task_creation
  COMMENT = 'This role can create serverless tasks.';
Copy
USE ACCOUNTADMIN;

GRANT CREATE TASK
  ON SCHEMA schema1
  TO ROLE serverless_task_creation;
Copy
GRANT EXECUTE MANAGED TASK ON ACCOUNT
  TO ROLE serverless_task_creation;
Copy

Criação de uma função personalizada para administrar tarefas

Crie uma função personalizada e com o privilégio EXECUTE TASK, e conceda essa função personalizada a qualquer função de proprietário de tarefa para permitir a alteração de suas próprias tarefas. Para remover a capacidade de o proprietário executar a tarefa, revogue esta função personalizada da função de proprietário de tarefa.

Por exemplo, crie um nome de função personalizado taskadmin e conceda a essa função o privilégio EXECUTE TASK. Atribua a função taskadmin a uma função de proprietário de tarefa chamada myrole:

USE ROLE securityadmin;

CREATE ROLE taskadmin;
Copy

Definia a função ativa para ACCOUNTADMIN antes de conceder privilégios ao nível de conta para a nova função.

USE ROLE accountadmin;

GRANT EXECUTE TASK, EXECUTE MANAGED TASK ON ACCOUNT TO ROLE taskadmin;
Copy

Defina a função ativa para SECURITYADMIN para mostrar que esta função pode conceder uma função a outra função.

USE ROLE securityadmin;

GRANT ROLE taskadmin TO ROLE myrole;
Copy

Para obter mais informações sobre a criação de funções personalizadas e hierarquias de funções, consulte Configuração do controle de acesso.

Descarte de uma função de proprietário de tarefa

Quando você exclui a função de proprietário de uma tarefa, a tarefa transfere a propriedade para a função que removeu a função de proprietário. Quando uma tarefa transfere a propriedade, ela é pausada automaticamente e novas execuções não são agendadas até que o novo proprietário retome a tarefa.

Se você descartar a função enquanto a tarefa estiver em execução, a execução da tarefa concluirá o processamento na função descartada.

Execução de tarefa de serviço do sistema

O Snowflake executa tarefas com os privilégios do proprietário da tarefa, mas as execuções de tarefa não estão associadas a um usuário. Ao invés disso, cada execução é realizada por um serviço de sistema. As tarefas são desacopladas de usuários específicos para evitar complicações que podem surgir quando os usuários são descartados, bloqueados devido a problemas de autenticação ou têm suas funções removidas.

Como as execuções de tarefas são desacopladas de um usuário, o histórico de consultas das execuções de tarefas está associado ao serviço do sistema. Como tal, não há credenciais de usuário para este serviço, e nenhum indivíduo pode assumir sua identidade. A atividade para o serviço do sistema é limitada à sua conta. As mesmas proteções de criptografia e outros protocolos de segurança são incorporados a este serviço, assim como são aplicados para outras operações.

DDL de tarefas

Para apoiar a criação e o gerenciamento de tarefas, o Snowflake fornece o seguinte conjunto de comandos DDL especiais:

Além disso, os provedores podem visualizar, conceder ou revogar o acesso aos objetos de banco de dados necessários para ELT usando o seguinte DDL de controle de acesso padrão:

Funções de tarefa

Para apoiar a recuperação de informações sobre tarefas, o Snowflake fornece o seguinte conjunto de funções SQL: