ALTER AGGREGATION POLICY¶
Substitui as regras ou comentários existentes de uma política de agregação. Também permite renomear uma política de agregação.
- Consulte também:
Sintaxe¶
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> SET BODY -> <expression>
ALTER AGGREGATION POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER AGGREGATION POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> UNSET COMMENT
Parâmetros¶
name
Especifica o identificador para a política de agregação a ser alterada.
Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.
Para obter mais informações, consulte Requisitos para identificadores.
RENAME TO new_name
Especifica o novo identificador para a política de agregação; deve ser único para seu esquema. O novo identificador não pode ser usado se o identificador já estiver em vigor para uma política de agregação diferente.
Para obter mais detalhes, consulte Requisitos para identificadores.
Você pode mover o objeto para um banco de dados e/ou esquema diferente enquanto opcionalmente renomeia o objeto. Para isso, especifique um valor qualificado
new_name
que inclua o novo banco de dados e/ou nome do esquema no formuláriodb_name.schema_name.object_name
ouschema_name.object_name
, respectivamente.Nota
O banco de dados e/ou esquema de destino já deve existir. Além disso, um objeto com o mesmo nome não pode já existir no banco de dados de destino; caso contrário, a instrução retorna um erro.
É proibido mover um objeto para um esquema de acesso gerenciado a menos que o proprietário do objeto (ou seja, a função que tem o privilégio OWNERSHIP sobre o objeto) também possua o esquema de destino.
SET ...
Especifica uma ou mais propriedades a serem definidas para a política de agregação:
BODY -> expression
Expressão SQL que determina as restrições de uma política de agregação.
Para definir as restrições da política de agregação, use a expressão SQL para chamar uma ou mais das seguintes funções internas:
- NO_AGGREGATION_CONSTRAINT
Quando o corpo da política retorna um valor dessa função, as consultas podem retornar dados de uma tabela ou exibição com restrição de agregação sem restrições. Por exemplo, o corpo da política poderia chamar esta função quando um administrador precisasse obter resultados não agregados da tabela ou exibição com restrição de agregação.
Chame NO_AGGREGATION_CONSTRAINT sem argumento.
- AGGREGATION_CONSTRAINT
Quando o corpo da política retorna um valor desta função, as consultas devem agregar dados para retornar resultados. Use o argumento MIN_GROUP_SIZE para especificar quantos registros devem ser incluídos em cada grupo de agregação.
A sintaxe da função AGGREGATION_CONSTRAINT é:
AGGREGATION_CONSTRAINT ( MIN_GROUP_SIZE => <integer_expression> )
Onde
integer_expression
resolve o tamanho mínimo do grupo da política.Há uma diferença entre passar
1
e0
como argumento para a função. Ambos exigem que os resultados sejam agregados.Passar um
1
também exige que cada grupo de agregação contenha pelo menos um registro da tabela restrita por agregação. Portanto, para junções externas, pelo menos um registro da tabela com restrição de agregação deve corresponder a um registro de uma tabela desprotegida.Passar um
0
permite que a consulta retorne grupos que consistem inteiramente em registros de outra tabela. Portanto, para junções externas entre uma tabela com restrição de agregação e uma tabela desprotegida, um grupo pode consistir em registros da tabela desprotegida que não correspondam a nenhum registro na tabela com restrição de agregação.
O corpo de uma política não pode fazer referência a funções, tabelas ou exibições definidas pelo usuário.
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 informações sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.
COMMENT = 'string_literal'
Adiciona um comentário ou substitui o comentário existente da política de agregação.
Padrão: sem valor
UNSET ...
Especifica uma ou mais propriedades e/ou parâmetros com a definição cancelada, redefinindo-os para seus padrões, para a política de agregação:
TAG tag_name [ , tag_name ... ]
COMMENT
Ao redefinir uma propriedade/parâmetro, especificar somente o nome; especificar um valor para a propriedade retornará um erro.
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 |
---|---|---|
OWNERSHIP |
Política de agregação |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
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.
Para detalhes adicionais sobre DDL e privilégios da política de agregação, consulte Privilégios e comandos.
Notas de uso¶
Se você quiser atualizar uma política de agregação existente e precisar ver o corpo atual da política, execute o comando DESCRIBE AGGREGATION POLICY. Você também pode usar a função GET_DDL para obter a definição completa da política de agregação, incluindo seu corpo.
É proibido mover uma política de agregação para um esquema de acesso gerenciado (usando a sintaxe ALTER AGGREGATIONPOLICY … RENAME TO), a menos que o proprietário da política de agregação (ou seja, a função que tem o privilégio OWNERSHIP na política de agregação) também seja o proprietário do esquema de destino.
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.
Exemplos¶
Altere a expressão SQL da política de agregação para exigir um tamanho mínimo de grupo de 2 linhas em todas as circunstâncias:
ALTER AGGREGATION POLICY my_policy SET BODY -> AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE=>2);
Renomeie uma política de agregação:
ALTER AGGREGATION POLICY my_policy RENAME TO agg_policy_table1;