Monitorar a qualidade dos dados de um esquema

Quando uma função de métrica de dados (Data Metric Function, DMF) está associada a uma tabela ou exibição, a DMF é executada em intervalos regulares e retorna um valor que fornece insights sobre a qualidade dos dados.

Agora você pode usar um única instrução SQL para configurar um esquema, assim todos os objetos no esquema são associados à mesma DMF. Você pode associar as seguintes DMFs do sistema no nível do esquema:

  • ROW_COUNT: use para retornar informações sobre o volume de dados em objetos no esquema.

  • FRESHNESS: use para retornar informações sobre a frequência com que os objetos no esquema são atualizados.

Quando você associa uma dessas DMFs no nível do esquema, pode especificar que deseja que o Snowflake determine se há anomalias no volume ou o nível de atualização de uma tabela ou exibição ao longo do tempo.

O exemplo a seguir mostra como habilitar a detecção de anomalias para associação entre a DMF ROW_COUNT e cada objeto no esquema my_schema:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;

O Snowflake treina o algoritmo de detecção de anomalias e começa automaticamente a identificar anomalias no volume de tabelas e exibições no esquema my_schema.

Adicionar uma DMF a um esquema

Quando você associa uma DMF a um esquema, todos os objetos no esquema são associados à DMF.

Sintaxe

Use a seguinte sintaxe para adicionar uma DMF a um esquema.

ALTER SCHEMA <name>
  ADD DATA METRIC FUNCTION { SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()
    [ ANOMALY_DETECTION = { TRUE | FALSE } ]
    [ EXCLUDE_TABLE_TYPES = ( '<object_type>' [ , '<object_type>' ... ] ) ]

Argumentos

{ SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()

Associa a DMF do sistema aos objetos no esquema.

Os valores possíveis são SNOWFLAKE.CORE.ROW_COUNT e SNOWFLAKE.CORE.FRESHNESS.

ANOMALY_DETECTION = { TRUE | FALSE }

Se TRUE, o Snowflake usa um algoritmo para detectar anomalias nos valores retornados pela DMF. O Snowflake detecta anomalias em cada objeto, não no esquema inteiro.

Padrão: FALSE

EXCLUDE_TABLE_TYPES = ( 'object_type', 'object_type' ... )

Exclui todos os objetos do tipo especificado. O Snowflake não cria associações entre a DMF e esses objetos. Veja a seguir os valores possíveis:

  • 'DYNAMIC_TABLE'

  • 'EVENT_TABLE'

  • 'EXTERNAL_TABLE'

  • 'ICEBERG_TABLE'

  • 'MATERIALIZED_VIEW'

  • 'TABLE'

  • 'VIEW'

Para excluir um objeto específico, e não todos os objetos de um determinado tipo, você pode substituir a associação da DMF no nível do objeto.

Exemplos

Associar a DMF FRESHNESS a todos os objetos em um esquema:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON ();

Associar a DMF ROW_COUNT a todos os objetos em um esquema e permitir a detecção de anomalias para as associações:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;

Associar a DMF ROW_COUNT às tabelas em um esquema, mas não a associar a exibições e exibições materializadas:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    EXCLUDE_TABLE_TYPES=('VIEW', 'MATERIALIZED_VIEW');

Substituindo as configurações no nível do objeto

Quando você adiciona uma DMF no nível do esquema, o Snowflake cria uma associação no nível do objeto entre cada objeto no esquema e a DMF. Você pode substituir essa associação no nível do objeto se quiser mudar a forma como a DMF é executada no objeto.

Suponha que você habilitou a detecção de anomalias quando adicionou a DMF ROW_COUNT a my_schema. Se você não quiser que o Snowflake detecte anomalias na tabela my_schema.employees, execute o seguinte comando:

ALTER TABLE employees
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET ANOMALY_DETECTION = FALSE;

Você também pode remover a associação de um objeto específico se quiser parar de executar a DMF. Por exemplo, se você quiser parar a execução da DMF ROW_COUNT na tabela my_schema.employees, execute o seguinte comando:

ALTER TABLE employees
  DROP DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ();

Você também pode substituir o cronograma no nível do esquema para alterar a frequência com que uma DMF é executada para um determinado objeto. Para obter informações sobre como definir o cronograma no nível do objeto, consulte Ajustar o cronograma das DMFs.

Ajustando o cronograma de execução

Por padrão, o cronograma das métricas de dados para um esquema é de 60 minutos. A DMF é executada em cada objeto no esquema a cada hora. É possível alterar esse padrão no nível do esquema ou substituí-lo no nível do objeto.

Use o seguinte comando para controlar a frequência de execução das DMFs nos objetos de um esquema:

ALTER SCHEMA <name> SET DATA_METRIC_SCHEDULE = '<schedule>';

Os valores possíveis para schedule são os mesmos no nível do esquema e no nível do objeto. Para visualizar os valores possíveis, consulte ALTER TABLE …SET DATA_METRIC_SCHEDULE.

O cronograma que você define no nível do esquema controla a frequência com que a DMF é executada em cada objeto, a menos que você o substitua para tabelas ou exibições específicas. Para obter informações sobre como definir o cronograma no nível do objeto, consulte Ajustar o cronograma das DMFs.

Suspendendo as DMFs

A sintaxe para suspender e retomar uma DMF associada ao nível do esquema é a mesma usada para associações no nível da tabela. Por exemplo, para suspender a DMF ROW_COUNT associada ao esquema my_schema, execute o seguinte comando:

ALTER SCHEMA my_schema
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SUSPEND;

Determinando quais associações foram definidas no nível do esquema

É possível usar a exibição e a função a seguir para determinar quais objetos são associados a uma DMF:

A exibição e a saída da função contêm uma coluna level, que tem os seguintes valores possíveis:

  • TABLE: alguém associou a DMF diretamente ao objeto.

  • SCHEMA: alguém adicionou a DMF ao esquema, que criou a associação entre o objeto e a DMF.

Rastreando associações no nível do esquema

Você pode chamar a função DATA_METRIC_FUNCTION_REFERENCES para determinar quais DMFs foram adicionadas a um esquema. Por exemplo, para ver quais DMFs foram adicionadas ao esquema db1.my_schema, execute o seguinte comando:

SELECT *
  FROM TABLE(
    INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
      REF_ENTITY_NAME => 'db1.my_schema',
      REF_ENTITY_DOMAIN => 'schema'
    )
  );

Requisitos de controle de acesso

Para adicionar uma DMF a um esquema, você deve ter os seguintes privilégios e funções de controle de acesso:

  • OWNERSHIP no esquema.

  • MANAGE DATA QUALITY na conta.

  • EXECUTE DATA METRIC FUNCTION na conta.

  • Função de banco de dados SNOWFLAKE.DATA_METRIC_USER.

O Snowflake não executará a DMF, a menos que o proprietário do esquema continue a ter o privilégio MANAGE DATA QUALITY na conta.

Para executar a DMF em um objeto no esquema com sucesso, o proprietário do objeto deve ter os mesmos privilégios que são necessários para associar a DMF ao objeto. Para ver a lista desses privilégios, consulte Requisitos de controle de acesso.

Considerações e limitações

  • A DMF FRESHNESS requer um argumento de coluna para exibições e tabelas externas. Como resultado, se você adicionar a DMF FRESHNESS a um esquema, o Snowflake ignora as exibições e tabelas externas ao associar a DMF aos objetos no esquema.

  • Não é possível definir um cronograma baseado em acionador no nível do esquema.