Detecção de anomalias na qualidade de dados

Retornar um valor de uma função de métrica de dados (Data Metric Function, DMF) apresenta informações úteis, mas pode ser difícil saber se isso indica um problema de qualidade de dados. Você poderá definir uma expectativa se souber qual é o valor aceitável, mas talvez seja difícil definir regras manuais suficientes para identificar todos os possíveis problemas de qualidade de dados.

Como solução, o Snowflake fornece um algoritmo capaz de detectar anomalias nos valores retornados por uma DMF. O Snowflake treina esse algoritmo com dados históricos e identifica automaticamente os valores de retorno que estão acima ou abaixo de um intervalo previsto.

Você pode habilitar a detecção de anomalias para as seguintes DMFs do sistema:

  • ROW_COUNT: use-a para identificar anomalias no volume de dados em uma tabela.

  • FRESHNESS: use-a para identificar anomalias na frequência de atualização de uma tabela.

O exemplo a seguir mostra como habilitar a detecção de anomalias para associação entre a DMF ROW_COUNT e a tabela t1:

ALTER TABLE t1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;
Copy

O Snowflake treina o algoritmo e começa automaticamente a identificar anomalias no volume da tabela t1.

Sobre o período de treinamento

Quando você habilita a detecção de anomalias, o Snowflake treina o algoritmo de detecção de anomalias com base em dados históricos. A duração do período de treinamento depende da frequência de execução da DMF.

  • Para DMFs executadas com frequência, o Snowflake requer pelo menos duas semanas de dados da DMF para começar a detectar anomalias. Esse período de duas semanas é essencial para estabelecer a sazonalidade semanal. Se a DMF estiver em execução há mais tempo, o Snowflake treinará o algoritmo com base em dados por até 60 dias. Esse período de treinamento mais longo estabelece a sazonalidade mensal e aumenta a precisão. A Snowflake recomenda que você deixe o algoritmo ser treinado com base em dados por 60 dias para detectar anomalias com um alto grau de confiança.

  • Para DMFs executadas com pouca frequência ou de acordo com um cronograma baseado em acionadores, o Snowflake deve ter pelo menos dois pontos de dados para treinar o algoritmo. Por exemplo, se uma DMF é executada todos os meses, o Snowflake analisa os dois meses anteriores para treinar o algoritmo.

Você pode identificar se o Snowflake ainda está no período de treinamento executando a função DATA_METRIC_FUNCTION_REFERENCES. Se a detecção de anomalias foi habilitada, mas o algoritmo ainda está sendo treinado, a coluna anomaly_detection_status da saída contém o valor TRAINING_IN_PROGRESS.

Habilitação da detecção de anomalias

Você pode habilitar a detecção de anomalias para associação de uma DMF ao associar pela primeira vez a DMF a um objeto, ou pode habilitá-la mais tarde.

Exemplo: Habilitação da detecção de anomalias ao associar uma DMF

Para habilitar a detecção de anomalias ao associar a DMF FRESHNESS à exibição v1, execute o seguinte comando:

ALTER VIEW v1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON (c_timestamp)
    ANOMALY_DETECTION = TRUE;
Copy
Exemplo: Habilitação da detecção de anomalias para uma associação existente

Para habilitar a detecção de anomalias para uma associação existente entre a DMF ROW_COUNT e a tabela t1, execute o seguinte comando:

ALTER TABLE t1
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET ANOMALY_DETECTION = TRUE;
Copy

Ajuste do nível de sensibilidade da detecção de anomalias

Depois de habilitar a detecção de anomalias, você poderá rastrear quantas anomalias ocorrem em sua conta. Se o número de anomalias parecer muito baixo ou muito alto, você poderá ajustar o nível de sensibilidade do algoritmo de detecção de anomalias.

  • Se houver muitos falsos positivos (ou seja, valores identificados erroneamente como anomalias), altere a sensibilidade para LOW para encontrar menos anomalias.

  • Se houver muitos falsos negativos (ou seja, valores que não foram identificados como anomalias, mas que realmente são anomalias), altere a sensibilidade para HIGH para encontrar mais anomalias.

O nível de sensibilidade padrão é MEDIUM.

Por exemplo, para aumentar a sensibilidade da associação de uma DMF que encontra anomalias no volume da tabela t1, execute o seguinte comando:

ALTER TABLE t1
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET SENSITIVITY = 'HIGH';
Copy

Desabilitação da detecção de anomalias

Você pode desabilitar a detecção de anomalias para a associação de uma DMF a qualquer momento usando a instrução ALTER para modificar o objeto.

Por exemplo, para desabilitar a detecção de anomalias para a associação entre a DMF ROW_COUNT e a tabela t1, execute o seguinte comando:

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

Identificação de anomalias

Você pode identificar anomalias usando o seguinte:

SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW

Os resultados de qualidade de dados são registrados na tabela de eventos dedicada SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW.

Se a detecção de anomalias estiver habilitada para a associação de uma DMF, duas linhas são adicionadas à tabela toda vez que o Snowflake calcula o resultado da DMF. A primeira linha registra informações sobre o objeto ao qual o DMF está associado, o próprio DMF e o resultado da verificação de qualidade de dados. A segunda linha registra as informações relacionadas à detecção de anomalias.

O campo snow.data_metric.record_type na coluna record_attribute indica se uma linha corresponde a uma detecção de anomalias. Esse campo tem dois valores possíveis:

  • ANOMALY_DETECTION_STATUS: indica que a linha corresponde à detecção de anomalias.

  • EVALUATION_RESULT - Indica que a linha corresponde à avaliação do DMF.

Como identificar se houve ou não uma anomalia

Depois de determinar que uma linha na tabela de eventos corresponde à detecção de anomalias, você poderá analisar o campo snow.data_metric.evaluation_result na coluna resource_attribute para determinar se houve uma anomalia.

Esse campo contém uma VARIANT com o valor retornado pela DMF e um valor BOOLEAN indicando se esse valor era uma anomalia. Por exemplo, se o valor do campo snow.data_metric.evaluation_result é 5, TRUE, o valor retornado era 5 e o Snowflake o identificou como uma anomalia.

Campos adicionais

Se a linha na tabela de eventos corresponder à detecção de anomalias, a coluna resource_attribute também incluirá os seguintes campos:

  • snow.data_metric.upper_bound: valor mais alto que deve ser retornado pela DMF com base no algoritmo de detecção de anomalias. Se o valor retornado pela DMF estiver acima desse limite máximo, ele será uma anomalia.

  • snow.data_metric.lower_bound: o valor mais baixo que deve ser retornado pela DMF com base no algoritmo de detecção de anomalias. Se o valor retornado pela DMF estiver abaixo desse limite mínimo, ele será uma anomalia.

  • snow.data_metric.forecast: o valor que o algoritmo de detecção de anomalias previu que seria retornado pela DMF.

Exibição DATA_QUALITY_MONITORING_ANOMALY_DETECTION

A exibição Exibição DATA_QUALITY_MONITORING_ANOMALY_DETECTION, que existe no esquema SNOWFLAKE.LOCAL, simplifica as informações na tabela de eventos para facilitar o acesso aos resultados da DMF.