CREATE ALERT

Cria um novo alerta no esquema atual.

Este comando também oferece suporte à seguinte variante:

  • CREATE ALERT … CLONE (cria um clone de um alerta existente)

Consulte também:

ALTER ALERT , DESCRIBE ALERT, DROP ALERT , SHOW ALERTS , EXECUTE ALERT

Importante

Alertas recém-criados ou clonados são suspensos após a criação. Para obter informações sobre como retomar alertas suspensos, consulte Suspensão e retomada de um alerta.

Sintaxe

CREATE [ OR REPLACE ] ALERT [ IF NOT EXISTS ] <name>
  WAREHOUSE = <warehouse_name>
  SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }'
  COMMENT = '<string_literal>'
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
  IF( EXISTS(
    <condition>
  ))
  THEN
    <action>
Copy

Sintaxe da variante

CREATE ALERT … CLONE

Cria um novo alerta com os mesmos valores de parâmetro:

CREATE [ OR REPLACE ] ALERT <name> CLONE <source_alert>
  [ ... ]
Copy

Para obter mais detalhes, consulte CREATE <objeto> … CLONE.

Nota

Ao clonar um alerta usando CREATE ALERT <nome> CLONE ou clonando um esquema ou banco de dados que contém o alerta, o novo alerta terá todas as propriedades do alerta original, exceto as propriedades que você substituir explicitamente.

Parâmetros obrigatórios

name

Cadeia de caracteres que especifica o identificador (ou seja, nome) do alerta; deve ser único para o esquema no qual o alerta é criado.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais detalhes, consulte Requisitos para identificadores.

WAREHOUSE = warehouse_name

Especifica o warehouse virtual que fornece recursos de computação para a execução deste alerta.

SCHEDULE ...

Especifica o cronograma para avaliar periodicamente a condição do alerta.

Você pode especificar o cronograma de uma das seguintes maneiras:

  • USING CRON expr time_zone

    Especifica uma expressão cronológica e um fuso horário para avaliar periodicamente a condição do alerta. Oferece suporte a um subconjunto de sintaxe de utilitário cron padrão.

    A expressão cron consiste nos seguintes campos:

    # __________ minute (0-59)
    # | ________ hour (0-23)
    # | | ______ day of month (1-31, or L)
    # | | | ____ month (1-12, JAN-DEC)
    # | | | | _ day of week (0-6, SUN-SAT, or L)
    # | | | | |
    # | | | | |
      * * * * *
    
    Copy

    Os seguintes caracteres especiais são suportados:

    Caractere especial

    Descrição

    *

    Curinga. Quando especificado para um determinado campo, o alerta é executado a cada unidade de tempo desse campo.

    Por exemplo, * no campo mês especifica que o alerta é executado todos os meses.

    L

    Significa “último”. Quando usado no campo do dia da semana, permite especificar construções como “a última sexta-feira” (“5L”) de um determinado mês. No campo do dia do mês, ele especifica o último dia do mês.

    /n

    Indica a n enésima instância de uma determinada unidade de tempo. Cada quanta de tempo é computada independentemente.

    Por exemplo, se 4/3 estiver especificado no campo do mês, a avaliação da condição está programada para abril, julho e outubro (ou seja, a cada 3 meses, começando com o quarto mês do ano).

    O mesmo cronograma é mantido nos anos seguintes. Ou seja, a condição não está programada para ser avaliada em janeiro (3 meses após a execução de outubro).

    Nota

    • Atualmente, a expressão cron avalia apenas em relação ao fuso horário especificado. Alterar o valor do parâmetro TIMEZONE para a conta (ou definir o valor no nível do usuário ou da sessão) não altera o fuso horário para o alerta.

    • A expressão cron define todas as horas válidas para a avaliação da condição do alerta. O Snowflake tenta avaliar a condição com base nesse cronograma; no entanto, qualquer tempo de execução válido é ignorado se uma execução anterior não tiver sido concluída antes do próximo tempo de execução válido começar.

    • Quando tanto um dia específico do mês como um dia da semana são incluídos na expressão cron, a avaliação da condição é programada em dias que satisfaçam o dia do mês ou o dia da semana. Por exemplo, SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' programa uma avaliação no horário 0AM em qualquer dia de 10 a 20 e também em qualquer terça-feira ou quinta-feira fora dessas datas.

  • num MINUTE

    Especifica um intervalo (em minutos) de espera inserido entre as avaliações do alerta. Aceita apenas números inteiros positivos.

    Também oferece suporte à sintaxe num M.

    Para evitar ambiguidade, um tempo de intervalo base é definido quando o alerta é retomado (usando ALTER ALERT … RESUME).

    O tempo de intervalo base inicia o contador de intervalo a partir da hora atual do relógio. Por exemplo, se um alerta for criado com 10 MINUTE e o alerta for retomado às 9:03h AM, então a condição do alerta será avaliada às 9:13h AM, 9:23h AM, e assim por diante. Note que fazemos o melhor para assegurar precisão absoluta, mas apenas garantimos que as condições não sejam avaliadas antes que seu intervalo definido ocorra (por exemplo, no exemplo atual, a condição poderia ser avaliada primeiro às 9:14h AM, mas definitivamente não será às 9:12h AM).

    Nota

    O valor máximo suportado é 11520 (8 dias). Os alertas que têm um valor maior de num MINUTE nunca têm suas condições avaliadas.

COMMENT = 'string_literal'

Especifica um comentário para o alerta.

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Especifica o nome da tag e o valor da cadeia de caracteres dela.

O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.

Para obter mais detalhes sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.

IF( EXISTS( condition ))

A instrução SQL que representa a condição do alerta. Você pode usar os seguintes comandos:

Se a instrução retornar uma ou mais linhas, a ação de alerta será executada.

THEN action

A instrução SQL que deve ser executada se a condição retornar uma ou mais linhas.

Para enviar uma notificação por e-mail, você pode chamar o procedimento armazenado SYSTEM$SEND_EMAIL().

Requisitos de controle de acesso

Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:

Privilégio

Objeto

Notas

EXECUTE ALERT

Conta

CREATE ALERT

Esquema

USAGE

Warehouse

Necessário no warehouse utilizado para o alerta.

Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Os alertas são executados utilizando os privilégios concedidos ao proprietário do alerta (ou seja, a função que tem o privilégio OWNERSHIP no alerta). Para a lista de privilégios mínimos necessários para executar os alertas, consulte Concessão dos privilégios para criar alertas.

    Para verificar se a função de proprietário do alerta tem os privilégios necessários para executar instruções SQL para a condição e ação, recomendamos que você execute estas instruções usando a função de proprietário do alerta antes de especificá-las em CREATE ALERT.

  • Quando você cria um alerta, o alerta é suspenso por padrão.

    Para tornar o alerta ativo, você deve executar ALTER ALERT … RESUME.

  • Ao executar CREATE ALERT ou ALTER ALERT, algumas verificações de validação não são executadas nas instruções da condição e da ação, incluindo:

    • A resolução dos identificadores de objetos.

    • A resolução dos tipos de dados das expressões.

    • A verificação do número e tipos de argumentos em uma chamada de função.

    Os comandos CREATE ALERT e ALTER ALERT não falham se a instrução SQL para uma condição ou ação especificar um identificador inválido, tipo de dados incorreto, número e tipos incorretos de argumentos de função etc. Em vez disso, a falha ocorre quando o alerta é executado.

    Para verificar falhas em um alerta existente, use a função de tabela ALERT_HISTORY.

    Para evitar esses tipos de falhas, antes de especificar as condições e ações para alertas, verifique as expressões e instruções SQL para essas condições e ações.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

Exemplos

Consulte Como criar um alerta.