CREATE AGGREGATION POLICY

Cria uma nova política de agregação no esquema atual/especificado ou substitui uma política de agregação existente.

Depois de criar uma política de agregação, atribua a política de agregação a uma tabela usando um comando ALTER TABLE ou a uma exibição usando um comando ALTER VIEW.

Consulte também:

Referência DDL da política de agregação

Sintaxe

CREATE [ OR REPLACE ] AGGREGATION POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS AGGREGATION_CONSTRAINT -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

Parâmetros

name

Identificador da política de agregação; deve ser único para seu esquema.

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, "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.

body

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> )
Copy

Onde integer_expression resolve o tamanho mínimo do grupo da política.

Há uma diferença entre passar 1 e 0 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.

COMMENT = 'string_literal'

Adiciona um comentário ou substitui um comentário existente para a política de agregação.

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

CREATE AGGREGATION POLICY

Esquema

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 ou a função GET_DDL.

  • 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

Crie uma política de agregação que exija que as consultas retornem grupos de cinco ou mais linhas:

CREATE AGGREGATION POLICY my_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
  AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Copy

Crie uma política de agregação que permita que um usuário com função admin retorne resultados não agregados enquanto exige que todas as outras consultas retornem grupos de cinco ou mais linhas:

CREATE AGGREGATION POLICY my_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
    CASE
      WHEN CURRENT_ROLE() = 'ADMIN'
        THEN NO_AGGREGATION_CONSTRAINT()
      ELSE AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5)
    END;
Copy