Propagação automática de tags com tags definidas pelo usuário¶
A propagação de tags atribui automaticamente uma tag de objeto aos objetos de destino se ela for aplicada ao objeto de origem. Por exemplo, você pode definir tags em um objeto de origem, como uma tabela e suas colunas, e essas tags são automaticamente propagadas para um objeto de destino, como uma exibição ou outra tabela criada a partir do objeto de origem.
As vantagens da propagação automática de tags incluem o seguinte:
Simplificação do gerenciamento de tags entre objetos, especialmente quando as tags são aplicadas a objetos ou colunas de origem para facilitar a descoberta e proteção de dados.
Garantia de que todas as políticas associadas às tags sejam aplicadas automaticamente aos objetos de destino.
Somente o proprietário da tag com o privilégio APPLY TAG em nível de conta pode implementar a propagação de tag automática.
Tipos de propagação¶
Você pode optar por propagar uma tag quando houver uma dependência de objeto, uma movimentação de dados ou ambas.
Propagação de tags para dependências de objeto¶
Quando a propagação de tags é configurada para dependências de objeto, uma tag é propagada de um objeto de origem para todos os objetos de destino baseados nela. Por exemplo, se você configurar a propagação de uma tag data_sensitivity
em uma tabela t1
e, em seguida, criar duas exibições com base em t1
, a tag data_sensitivity
será propagada para ambas as exibições.
A criação de uma exibição, exibição segura, exibição materializada ou tabela dinâmica a partir de um objeto de origem é considerada uma dependência de objeto.
Propagação contínua para dependências de objeto¶
Quando uma tag é configurada para dependências de objeto, o Snowflake atualiza continuamente os objetos de destino quando ocorre qualquer uma das seguintes situações:
A tag é adicionada a um objeto ou coluna de origem.
O valor de uma tag é atualizado.
Uma tag é removida de um objeto ou coluna de origem. Nesse caso, o Snowflake remove a tag do objeto ou da coluna de destino.
Por exemplo, suponha que a tag data_sensitivity
tenha sido propagada da tabela t1
para a exibição v2
após a execução de uma instrução CREATE VIEW. Quando você altera o valor de data_sensitivity
em t1
, o valor da tag em v2
também é atualizado.
A propagação automática de tags depende da existência do objeto de origem. Se o objeto de origem com tags for descartado, as tags não serão propagadas para o objeto de destino. Como uma exibição depende de suas fontes, como uma tabela base ou outras exibições, as tags são propagadas somente se o objeto de origem existir.
Propagação de tags para movimentação de dados¶
Quando a propagação de tags é configurada para a movimentação de dados, uma tag é propagada quando você move dados de um objeto de origem para outro objeto por meio de um dos seguintes procedimentos:
Executando uma instrução CREATE TABLE … AS SELECT (CTAS) para criar uma tabela.
Execução de uma instrução CREATE DYNAMIC TABLE.
Execução de um comando de linguagem de manipulação de dados (DML). A propagação de tags ocorre para os seguintes comandos de DML:
INSERT
MERGE
UPDATE
COPY INTO
CREATE TABLE … CLONE e CREATE TABLE … LIKE não dependem da propriedade de tag PROPAGATE para propagação de tag. Quando você executa essas instruções, as tags da origem são sempre atribuídas ao objeto de destino.
Nota
Diferentemente da propagação de tags para dependências de objetos, as tags aplicadas aos objetos de destino quando há movimentação de dados não são continuamente atualizadas à medida que as tags são alteradas no objeto de origem.
Configuração da propagação de tags¶
Para ativar a propagação automática de tags, use o comando CREATE TAG ou ALTER TAG para definir a propriedade PROPAGATE. Você pode configurar a propriedade para que as tags sejam propagadas para dependências de objetos, movimentação de dados ou ambos.
Para obter instruções sobre como configurar a propagação de tags, consulte Defina uma tag que se propagará automaticamente.
Conflitos de propagação de tags¶
Podem ocorrer conflitos quando uma tag é propagada de diferentes objetos de origem para o mesmo objeto de destino. Se a tag tiver um valor diferente em cada um dos objetos de origem, haverá um conflito quando essa tag for propagada dos objetos de origem para o objeto de destino.
Nota
Se o objeto de destino tiver uma tag que tenha sido aplicada manualmente, o valor da tag existente terá precedência sobre um valor propagado para que não haja conflito.
Se o objeto de destino herdar um valor de objeto superior na hierarquia de objetos Snowflake, o valor propagado terá precedência e não haverá conflito.
A propriedade ON_CONFLICT de uma tag determina o que acontece quando há um conflito. Você tem três opções para lidar com conflitos de propagação de tags:
Opção 1: substitua o valor da tag pela cadeia de caracteres
CONFLICT
. Esse será o padrão se você não definir o parâmetro ON_CONFLICT da tag.Opção 2: substitua o valor da tag por uma cadeia de caracteres definida pelo usuário. Você define o parâmetro ON_CONFLICT como essa cadeia de caracteres.
Por exemplo, se você quiser que o valor de uma tag seja
HIGHLY CONFIDENTIAL
quando houver um conflito de valores, use o seguinte SQL para criar a tag:CREATE TAG data_sensitivity PROPAGATE = ON_DEPENDENCY_AND_DATA_MOVEMENT ON_CONFLICT = 'HIGHLY CONFIDENTIAL';
CopyOpção 3: use a ordem dos valores no parâmetro ALLOWED_VALUES da tag para determinar qual valor usar. Defina
ON_CONFLICT = ALLOWED_VALUES_SEQUENCE
para implementar essa estratégia.Por exemplo, suponha que você tenha criado a tag com a seguinte instrução SQL:
CREATE TAG data_sensitivity ALLOWED_VALUES 'confidential', 'internal', 'public' PROPAGATE = ON_DEPENDENCY ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
CopySe houver um conflito para essa tag entre os valores
internal
epublic
, o valor da tagdata_sensitivity
seráinternal
, pois ela vem antes depublic
na lista de valores permitidos.Esteja ciente de que, se você optar por usar
ON_CONFLICT = ALLOWED_VALUES_SEQUENCE
, a alteração do parâmetro ALLOWED_VALUES afetará a forma como os conflitos são resolvidos. Por exemplo, se você alterar a ordem dos valores na lista permitida, conflitos futuros poderão resultar na atribuição de um valor diferente à tag.
Para rastrear conflitos associados à propagação de tag, consulte Uso de tabela de eventos para monitorar a propagação de tag.
Uso de tabela de eventos para monitorar a propagação de tag¶
Você pode usar uma tabela de eventos para coletar dados de telemetria relacionados à propagação de tag. Depois que o Snowflake começar a coletar os dados na tabela de eventos, você poderá consultar a tabela, criar um fluxo para rastrear alterações ou definir alertas para enviar notificações quando determinados eventos ocorrerem.
Se quiser coletar dados de telemetria para propagação de tag, será necessário habilitar o parâmetro de conta ENABLE_TAG_PROPAGATION_EVENT_LOGGING. Para começar a coletar dados, execute o seguinte comando:
ALTER ACCOUNT SET ENABLE_TAG_PROPAGATION_EVENT_LOGGING = TRUE;
Se você tiver uma tabela de eventos definida para o banco de dados da tag, os eventos serão registrados nessa tabela. Caso contrário, os eventos serão registrados na tabela de eventos padrão.
Explicação dos eventos¶
A tabela a seguir descreve os valores na tabela de eventos que correspondem à propagação de tag para que você possa se concentrar nos eventos apropriados. Para obter informações detalhadas sobre a estrutura de uma tabela de eventos, consulte Colunas da tabela de eventos.
Colunas da tabela de eventos |
Campo da coluna |
Valor do campo |
Descrição |
---|---|---|---|
|
|
|
Indica que o registro está relacionado à propagação automática de tag. |
|
|
|
Nome da tag que teve um evento durante a propagação. |
|
|
|
Indica que ocorreu um conflito ao propagar uma tag. |
|
|
|
Indica que o Snowflake não propagou uma tag porque havia mais de 10.000 objetos de destino. |
|
|
[ |
Matriz dos valores de tag em conflito. |
|
|
|
Indica a ação que Snowflake executou quando ocorreu um conflito. Para entender por que o conflito foi resolvido de uma determinada forma, consulte Conflitos de propagação de tags. |
|
|
|
Valor final da tag depois que o Snowflake resolveu um conflito. |
Use os exemplos a seguir para entender melhor como identificar eventos de propagação de tag em uma tabela de eventos.
- Consulta: encontrar todos os eventos relacionados à propagação da tag
TAG1
SELECT TIMESTAMP as time, RECORD_ATTRIBUTES['event_type'] as event_type, VALUE as event_details FROM tagging_db.tagging_schema.my_event_table WHERE SCOPE['name'] = 'snow.automatic_tag_propagation' AND RECORD_ATTRIBUTES['tag_name'] = 'TAGGING_DB.TAGGING_SCHEMA.TAG1';
Copy- Consulta: encontrar todas as tags que tiveram conflito quando propagadas
SELECT DISTINCT RECORD_ATTRIBUTES['tag_name'] as tags, VALUE['conflict_values'] as conflicting_tag_values, VALUE['resolution_type'] as resolution_type, VALUE['resolved_value'] as resolved_value, FROM tagging_db.tagging_schema.my_event_table WHERE SCOPE['name'] = 'snow.automatic_tag_propagation' AND RECORD_ATTRIBUTES['event_type'] = 'CONFLICT';
Copy- Consulta: encontrar entidades que tiveram conflitos quando a tag
TAG1
foi propagada SELECT TIMESTAMP as time, RECORD_ATTRIBUTES['entity_name'] as entity_name, RECORD_ATTRIBUTES['entity_domain'] as entity_domain, FROM tagging_db.tagging_schema.my_event_table WHERE SCOPE['name'] = 'snow.automatic_tag_propagation' AND RECORD_ATTRIBUTES['tag_name'] = 'TAGGING_DB.TAGGING_SCHEMA.TAG1' AND RECORD_ATTRIBUTES['event_type'] = 'CONFLICT';
Copy
Gravidade dos eventos¶
Os eventos de propagação de tag são registrados somente se o parâmetro LOG_LEVEL que controla a tabela foi configurado para mostrar eventos desse nível de gravidade. Use a tabela a seguir para determinar o nível de gravidade dos eventos de propagação de tag.
Tipo de evento |
Tipo de resolução |
Gravidade |
---|---|---|
|
|
WARN |
|
INFO |
|
|
INFO |
|
|
n/a |
ERROR |
Objetos com suporte¶
A propagação de tags da origem para o destino é compatível com os seguintes tipos de objetos:
Colunas
Os seguintes tipos de tabelas:
Tabelas
Tabelas dinâmicas – A criação de uma tabela dinâmica é considerada tanto uma dependência de objeto quanto uma movimentação de dados para fins de propagação de tags.
Tabelas externas
Tabelas Iceberg
Tabelas temporárias/transitórias
Os seguintes tipos de exibições:
Exibições
Exibições seguras
Exibições materializadas
Limitações e considerações¶
As tags do sistema não são propagadas.
As tags herdadas não são propagadas.
As tags não são propagadas de um compartilhamento para objetos locais.
O número de tags em um objeto não pode exceder o limite padrão.
Uma tag não pode ser propagada para mais de 10.000 objetos de destino. Você pode usar a tabela de eventos para descobrir se a propagação falhou por esse motivo.
Com a propagação de tags para dependências de objetos, uma tag pode ser aplicada tanto à tabela de origem quanto às exibições de destino. Se a tag estiver associada a uma política de mascaramento, poderá haver consequências associadas à execução duplicada da política.