CREATE TAG

Cria uma nova tag ou substitui uma tag existente no sistema.

Esse comando é compatível com as seguintes variantes:

Consulte também:

ALTER TAG , SHOW TAGS , DROP TAG , UNDROP TAG

Sintaxe

CREATE [ OR REPLACE ] TAG [ IF NOT EXISTS ] <name>
    [ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
    [ PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }
      [ ON_CONFLICT = { '<string>' | ALLOWED_VALUES_SEQUENCE } ] ]
    [ COMMENT = '<string_literal>' ]
Copy

Importante

O parâmetro ALLOWED_VALUES deve sempre ser definido antes de todos os outros parâmetros, como COMMENT, para que ALLOWED_VALUES funcione.

Sintaxe da variante

CREATE OR ALTER TAG

Cria uma nova tag, se ela ainda não existir, ou transforma uma tag existente na tag definida na instrução. Uma instrução CREATE OR ALTER TAG segue as regras de sintaxe de uma instrução CREATE TAG e tem as mesmas limitações de uma instrução ALTER TAG.

As alterações aceitas incluem mudanças nas propriedades ALLOWED_VALUES e COMMENT.

Para obter mais informações, consulte Notas de uso de CREATE OR ALTER TAG.

CREATE OR ALTER TAG <name>
  [ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
  [ COMMENT = '<string_literal>' ]
Copy

Parâmetros obrigatórios

name

Identificador para a tag. Atribuir o valor da tag de cadeia de caracteres em um objeto usando uma instrução CREATE <objeto> ou uma instrução ALTER <objeto>.

O valor do 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 “Meu objeto”). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais detalhes, consulte Requisitos para identificadores.

Parâmetros opcionais

ALLOWED_VALUES 'val_1' [ , 'val_2' [ , ... ] ]

Especifica uma lista separada por vírgula dos possíveis valores de cadeia de caracteres que podem ser atribuídos à tag quando a tag é definida em um objeto usando o comando correspondente CREATE <objeto> ou ALTER <objeto>.

Deve vir antes de todos os outros parâmetros para funcionar.

O número máximo de valores de tag nesta lista é 300.

Se uma tag estiver configurada para se propagar automaticamente para objetos de destino, a ordem dos valores na lista permitida pode afetar a forma como os conflitos são resolvidos. Para obter mais informações, consulte Conflitos de propagação de tags.

Padrão: NULL (todos os valores de cadeia caracteres são permitidos, inclusive um valor de cadeia de caracteres vazio (ou seja, ' ')).

PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }

Especifica que a tag será propagada automaticamente dos objetos de origem para os objetos de destino. Você pode configurar a tag para se propagar quando houver uma dependência de objeto, uma movimentação de dados ou ambas.

ON_DEPENDENCY_AND_DATA_MOVEMENT

Propaga a tag quando há uma dependência de objeto ou movimentação de dados.

ON_DEPENDENCY

Propaga a tag para dependências de objetos, mas não para movimentação de dados.

ON_DATA_MOVEMENT

Propaga a tag quando há movimentação de dados, mas não para dependências de objetos.

ON_CONFLICT = { 'string' | ALLOWED_VALUES_SEQUENCE }

Especifica o que acontece quando há um conflito entre os valores das tags propagadas.

Se você não definir esse parâmetro e houver um conflito, o valor da tag será definido como a cadeia de caracteres CONFLICT.

Os valores possíveis são:

'string'

Quando há um conflito, o valor da tag é definido como a cadeia de caracteres especificada.

ALLOWED_VALUES_SEQUENCE

A ordem dos valores na propriedade ALLOWED_VALUES da tag determina qual valor é usado quando há um conflito. Por exemplo, suponha que você tenha criado uma tag com a seguinte instrução:

CREATE TAG my_tag ALLOWED_VALUES 'blue', 'red'
  PROPAGATE = ON_DEPENDENCY
  ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
Copy

Se houver um conflito, o valor de my_tag será blue porque ele vem antes de red na lista de valores permitidos.

Padrão: definir o valor da tag como CONFLICT.

COMMENT = 'string_literal'

Especifica um comentário para a tag.

Padrão: sem valor

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

CREATE TAG

Esquema

OWNERSHIP

Tag

  • Uma função deve ser concedida ou herdar o privilégio OWNERSHIP no objeto para criar um objeto temporário com o mesmo nome do objeto que já existe no esquema.

  • Necessário para executar uma instrução CREATE OR ALTER TAG para uma tag existente.

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.

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.

Para detalhes adicionais sobre a tag DDL e privilégios, consulte Privilégios de controle de acesso.

Notas de uso de CREATE OR ALTER TAG

  • Todas as limitações do comando ALTER TAG se aplicam.

  • Não há suporte para a definição ou cancelamento de uma política de mascaramento.

  • O parâmetro ALLOWED_VALUES deve sempre ser definido antes de todos os outros parâmetros, como COMMENT, para que ALLOWED_VALUES funcione.

Notas de uso

  • O Snowflake limita o número de tags em uma conta a 10.000.

  • Para obter mais informações sobre como as tags podem ser associadas aos objetos Snowflake, consulte Introdução à marcação de objetos.

  • Para obter mais informações sobre a autorização da tag DDL, consulte privilégios necessários.

  • 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.

  • As cláusulas OR REPLACE e IF NOT EXISTS são mutuamente exclusivas. Elas não podem ser usadas na mesma instrução.

  • 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

Criar uma tag com a chave cost_center.

CREATE TAG cost_center COMMENT = 'cost_center tag';
Copy

Atualize o cost_center para incluir os novos valores permitidos e desmarque o comentário:

CREATE OR ALTER TAG cost_center ALLOWED_VALUES 'finance', 'engineering', 'sales';
Copy