Como usar funções de métricas de dados para realizar verificações de qualidade de dados

Este tópico descreve como associar uma função de métricas de dados (DMF) a uma tabela ou exibição para que ela execute uma verificação da qualidade dos dados em intervalos regulares. Ele também descreve como chamar uma DMF diretamente, por exemplo, se você quiser testar uma DMF antes de associá-la a uma tabela ou exibição.

Associe uma DMF para automatizar as verificações de qualidade dos dados

Você pode associar a DMF a uma tabela ou exibição para chamá-la automaticamente em intervalos regulares. Ao associar a DMF, você especifica quais colunas são passadas para a DMF como argumentos.

O processo de associar uma DMF a uma tabela ou exibição para automatizar as verificações de qualidade dos dados é um processo de duas etapas:

  1. Defina um cronograma na tabela ou exibição que determina a frequência de execução das DMFs. Você deve definir o cronograma antes de associar uma DMF à tabela ou exibição.

  2. Associe a DMF à tabela ou exibição.

Programe a execução da DMF

Você pode programar a execução das DMFs para automatizar as medições de qualidade dos dados em uma tabela.

O Snowflake usa a função de proprietário da tabela, que é a função com o privilégio OWNERSHIP na tabela, para chamar a DMF agendada. A função de proprietário da tabela deve ter estas concessões:

  • O privilégio USAGE na DMF definida pelo usuário e o privilégio USAGE no banco de dados e esquema que armazenam a DMF definida pelo usuário.

  • A função de banco de dados se DATA_METRIC_USER se a DMF for uma DMF do sistema.

  • O privilégio EXECUTEDATAMETRICFUNCTION na conta.

O parâmetro de objeto DATA_METRIC_SCHEDULE para uma tabela, exibição ou exibição materializada permite que você programe quando seus DMFs podem ser executados. Todas as funções de métricas de dados na tabela ou exibição seguem o mesmo cronograma.

Existem três abordagens para agendar a execução de sua DMF:

  • Defina a DMF a ser executada após um número especificado de minutos.

  • Use uma expressão cron para agendar a DMF a ser executada em uma frequência específica.

  • Use um evento de acionamento para agendar a DMF para ser executada quando houver uma DML mudança para a tabela, como inserir uma nova linha na tabela. No entanto:

Por exemplo:

Defina a programação da função de métrica de dados para ser executada a cada 5 minutos:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

Defina a programação da função de métrica de dados para ser executada às 8:00 AM diariamente:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
Copy

Defina a programação da função de métrica de dados para ser executada às 8:00 AM somente nos dias úteis:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
Copy

Defina a programação da função de métrica de dados para ser executada três vezes ao dia às 06:00, 12:00 e 18:00 UTC:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
Copy

Defina a função de métrica de dados para ser executada quando uma operação DML geral, como inserir uma nova linha, modifica a tabela:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Copy

Você pode usar o comando SHOW PARAMETERS para exibir o cronograma de DMF de um objeto de tabela aceito:

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;
Copy
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| key                  | value                          | default | level | description                                                                                                                  | type   |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC |         | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+

Para objetos de exibição e exibição materializada, especifique TABLE como o domínio do objeto e verifique o cronograma da seguinte forma:

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
Copy

Nota

Há um atraso de 10 minutos entre o momento em que você modifica a DMF de uma tabela e o momento em que as alterações de cronograma entram em vigor em DMFs anteriores atribuídas à tabela. Entretanto, novas atribuições de DMF à tabela não estão sujeitas ao atraso de 10 minutos. Planeje cuidadosamente as operações de agendamento de DMF e remoção de configuração de DMF para alinhá-las aos seus custos esperados de DMF.

Além disso, ao avaliar os resultados de DMF, como ao consultar a exibição DATA_QUALITY_MONITORING_RESULTS, especifique a coluna measurement_time na sua consulta como base para a avaliação. Há um processo interno que inicia a avaliação de DMF, e é possível que atualizações de tabela, como operações INSERT, ocorram entre o horário programado e o horário de medição. Ao utilizar a coluna measurement_time, você tem uma avaliação mais precisa dos resultados de DMF, pois o tempo de medição indica o tempo de avaliação da DMF.

Associe a DMF a uma tabela

Você usa um comando ALTER TABLE ou ALTER VIEW para associar uma DMF e especificar quais colunas são passadas como argumentos. Por exemplo, o comando a seguir associa a DMF de sistema NULL_COUNT à tabela t. Quando a DMF for executada, ela retornará o número de valores NULL na coluna c1.

ALTER TABLE t
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT
    ON (c1);
Copy

Nota

Use o comando ALTER VIEW para adicionar uma DMF em uma coluna de exibição materializada ou remover uma DMF de uma coluna de exibição materializada.

Descarte uma DMF de um objeto

Você pode descartar uma DMF usando um comando ALTER TABLE ou ALTER VIEW. Por exemplo:

ALTER TABLE t
  DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
    ON (c1, c2, c3);
Copy

Chame uma DMF manualmente

Chamar uma DMF diretamente pode ser útil para testar a saída da DMF antes de associá-la a uma tabela ou exibição.

Use a seguinte sintaxe para chamar uma DMF:

SELECT <data_metric_function>(<query>)
Copy

Onde:

data_metric_function

Especifica uma DMF do sistema ou definida pelo usuário.

query

Especifica uma consulta SQL em uma tabela ou exibição.

As colunas projetadas pela consulta devem corresponder aos argumentos da coluna na assinatura da DMF.

Nota

As DMFs do sistema a seguir não seguem essa sintaxe porque não recebem nenhum argumento:

Por exemplo, para chamar uma DMF count_positive_numbers personalizada, que aceita três colunas como argumentos, execute o seguinte:

SELECT governance.dmfs.count_positive_numbers(
  SELECT c1, c2, c3
  FROM t);
Copy

Por exemplo, para chamar a DMF do sistema NULL_COUNT (função de métricas de dados do sistema) e visualizar o número de valores NULL na coluna ssn, execute o seguinte:

SELECT SNOWFLAKE.CORE.NULL_COUNT(
  SELECT ssn
  FROM hr.tables.empl_info);
Copy