Como trabalhar com funções de métricas de dados

Antes de experimentar cada um dos exemplos neste tópico, certifique-se de que sua função em uso atenda aos requisitos de controle de acesso necessários.

Avalie agora: exemplo de DMF do sistema

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 na consulta devem corresponder aos argumentos da coluna na assinatura da DMF.

Nota

Estas DMFs do sistema não seguem esta sintaxe pois não aceitam nenhum argumento:

Chame uma DMF do sistema para começar a avaliar a qualidade de seus dados imediatamente.

Por exemplo, chame a NULL_COUNT (função de métricas de dados do sistema) DMF do sistema para ver o número de valores NULL na coluna SSN (o número da segurança social dos US):

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

Você pode consultar a tabela de eventos para visualizar os resultados. Para obter mais informações, consulte Visualize os resultados da DMF:.

Crie sua própria DMF

Use o comando CREATE DATA METRIC FUNCTION para criar suas próprias DMFs.

Crie uma DMF que chama a função COUNT para retornar o número total de linhas que não contêm valores NULL ao avaliar as três primeiras colunas da tabela:

CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
  arg_t TABLE(
    arg_c1 NUMBER,
    arg_c2 NUMBER,
    arg_c3 NUMBER
  )
)
RETURNS NUMBER
AS
$$
  SELECT
    COUNT(*)
  FROM arg_t
  WHERE
    arg_c1>0
    AND arg_c2>0
    AND arg_c3>0
$$;
Copy

Para um exemplo que faça referência a uma tabela diferente daquela à qual você atribui a DMF, consulte Exemplo: referência de chave estrangeira.

Nota

Se você precisar visualizar a definição da DMF, use o comando DESCRIBE FUNCTION (DMF).

Visualização das propriedades de uma DMF

Descreva a DMF para visualizar suas propriedades:

DESC FUNCTION governance.dmfs.count_positive_numbers(
  TABLE(
    NUMBER, NUMBER, NUMBER
  )
);
Copy
+-----------+---------------------------------------------------------------------+
| property  | value                                                               |
+-----------+---------------------------------------------------------------------+
| signature | (ARG_T TABLE(ARG_C1 NUMBER, ARG_C2 NUMBER, ARG_C3 NUMBER))          |
| returns   | NUMBER(38,0)                                                        |
| language  | SQL                                                                 |
| body      | SELECT COUNT(*) FROM arg_t WHERE arg_c1>0 AND arg_c2>0 AND arg_c3>0 |
+-----------+---------------------------------------------------------------------+

Proteção da DMF

Torne a DMF uma DMF segura:

ALTER FUNCTION governance.dmfs.count_positive_numbers(
 TABLE(
   NUMBER,
   NUMBER,
   NUMBER
))
SET SECURE;
Copy

Listagem de suas DMFs

Use o comando SHOW DATA METRIC FUNCTIONS ou SHOW FUNCTIONS para listar DMFs em sua conta, banco de dados ou esquema:

SHOW DATA METRIC FUNCTIONS IN ACCOUNT;
Copy

Alternativamente, você pode consultar a exibição Information Schema FUNCTIONS ou a exibição Account Usage FUNCTIONS para listar suas DMFs no banco de dados especificado ou em sua conta, respectivamente.

A coluna is_data_metric especifica se a função é uma DMF.

Defina uma tag em uma DMF

Use o comando ALTER FUNCTION para definir uma tag em uma DMF:

ALTER FUNCTION governance.dmfs.count_positive_numbers(
  TABLE(NUMBER, NUMBER, NUMBER))
  SET TAG governance.tags.quality = 'counts';
Copy

Como agendar suas DMFs para serem executadas

Você pode agendar suas DMFs para serem executadas para automatizar as medições de qualidade de 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.

Como adicionar e remover uma DMF em uma tabela ou exibição

Use um comando ALTER TABLE ou ALTER VIEW para fazer o seguinte:

  • Adicione uma DMF a uma tabela usando o comando ALTER TABLE.

    ALTER TABLE t
      ADD DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
      ON (c1, c2, c3);
    
    Copy
  • Descarte uma DMF de uma tabela usando um comando ALTER TABLE.

    ALTER TABLE t
      DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
      ON (c1, c2, c3);
    
    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.

Acompanhamento das referências da DMF

Você pode consultar a exibição Account Usage DATA_METRIC_FUNCTION_REFERENCES para visualizar as referências de DMF em sua conta ou chamar a função de tabela Information Schema DATA_METRIC_FUNCTION_REFERENCES para identificar as DMFs associadas a uma determinada tabela ou exibição ou às tabelas ou exibições associadas a uma determinada DMF.

Por exemplo:

Retorna uma linha para cada objeto (tabela ou exibição) que possua a DMF nomeada count_positive_numbers definida naquela tabela ou exibição:

USE DATABASE governance;
USE SCHEMA INFORMATION_SCHEMA;
SELECT *
  FROM TABLE(
    INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
      METRIC_NAME => 'governance.dmfs.count_positive_numbers'
    )
  );
Copy

Retorne uma linha para cada DMF atribuída à tabela nomeada hr.tables.empl_info:

USE DATABASE governance;
USE SCHEMA INFORMATION_SCHEMA;
SELECT *
  FROM TABLE(
    INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
      REF_ENTITY_NAME => 'hr.tables.empl_info',
      REF_ENTITY_DOMAIN => 'table'
    )
  );
Copy

Como chamar sua DMF manualmente

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 na consulta devem corresponder aos argumentos da coluna na assinatura da DMF.

Nota

Estas DMFs do sistema não seguem esta sintaxe pois não aceitam nenhum argumento:

Chame sua DMF diretamente e visualize os resultados:

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

Quando você definir uma DMF em uma tabela ou exibição e agendá-la para execução, você pode consultar a exibição criada a partir da tabela de eventos para visualizar os resultados. Para obter mais informações, consulte Visualize os resultados da DMF:.

Visualize os resultados da DMF:

Para exibir os resultados de DMF, primeiro você precisa gerenciar o acesso aos resultados e depois escolher como exibi-los:

Gerenciar o acesso aos resultados de DMF

Você tem três opções para acessar os resultados de uma consulta de DMF agendada, que são detalhadas na próxima seção:

Dependendo de como você deseja gerenciar o acesso aos resultados de DMF, conceda as seguintes funções de aplicativo do sistema a outra função de nível de conta:

Função do aplicativo

Notas

DATA_QUALITY_MONITORING_ADMIN

Pode usar as opções 1, 2 e 3.

Uma função que recebe essa função de aplicativo pode conceder as funções de aplicativo DATA_QUALITY_MONITORING_VIEWER e DATA_QUALITY_MONITORING_LOOKUP a outras funções.

Um usuário que recebe a função ACCOUNTADMIN pode conceder a função de aplicativo DATA_QUALITY_MONITORING_ADMIN a outras funções.

DATA_QUALITY_MONITORING_VIEWER

Opções 2 e 3.

DATA_QUALITY_MONITORING_LOOKUP

Somente opção 3.

Por exemplo, use o comando GRANT APPLICATION ROLE para conceder a função de aplicativo do sistema DATA_QUALITY_MONITORING_VIEWER à função personalizada analyst:

USE ROLE ACCOUNTADMIN;
GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE analyst;
Copy

Use o comando REVOKE APPLICATION ROLE para revogar a função de aplicativo do sistema de uma função de conta.

Dica

Além disso, se você quiser gerenciar o acesso aos resultados das DMFs do sistema, conceda a função de banco de dados SNOWFLAKE.DATA_METRIC_USER à função da conta que pode acessar os resultados. Para obter mais informações, consulte GRANT DATABASE ROLE.

Opções

Para exibir os resultados de DMF agendada, escolha uma das seguintes opções:

Opção 1: consultar a tabela de evento dedicada

Esta opção dá acesso aos dados brutos e você tem mais liberdade para processar posteriormente os dados usando objetos derivados, como criação de exibições, funções de tabela ou procedimentos armazenados com base em como deseja analisar os resultados. Além disso, se você criar esses objetos derivados, poderá conceder acesso seletivo a esses objetos para diferentes funções. Por exemplo, um engenheiro de dados pode acessar os procedimentos armazenados para manter a abordagem para obter os resultados, e um analista de dados pode acessar a exibição para analisar os resultados.

A tabela de eventos é denominada SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW.

Para obter mais informações sobre as colunas da tabela de eventos, consulte Colunas da tabela de eventos.

Para um exemplo representativo de consulta à tabela de eventos, consulte o tutorial de registro em log e rastreamento.

Opção 2: consultar a exibição DATA_QUALITY_MONITORING_RESULTS

Esta opção permite que você consulte a exibição DATA_QUALITY_MONITORING_RESULTS, que nivela os dados brutos na tabela de eventos para permitir acesso mais fácil aos resultados da DMF. Além disso, essa opção é melhor quando o pós-processamento de dados não é necessário e você não deseja conceder acesso aos dados brutos.

A exibição existe no esquema LOCAL no banco de dados SNOWFLAKE compartilhado: SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS

Para obter mais informações, consulte a exibição DATA_QUALITY_MONITORING_RESULTS.

Nota

O função de banco de dados SNOWFLAKE.GOVERNANCE_VIEWER não tem acesso à consulta da exibição DATA_QUALITY_MONITORING_RESULTS.

Opção 3: chamar a função de tabela DATA_QUALITY_MONITORING_RESULTS

Essa opção permite que você chame a função de tabela DATA_QUALITY_MONITORING_RESULTS para exibir os resultados de DMF. A função retorna as mesmas colunas que a exibição DATA_QUALITY_MONITORING_RESULTS. Entretanto, você só pode especificar uma única tabela ao chamar a função. Essa opção é melhor quando você deseja limitar os resultados da função de métrica de dados a uma única tabela e não fornecer acesso às medições de outras tabelas ou à tabela de eventos.

Além da função de aplicativo SNOWFLAKE.DATA_QUALITY_MONITORING_LOOKUP, a função usada para chamar a função de tabela DATA_QUALITY_MONITORING_RESULTS também precisa dos seguintes privilégios:

  • OWNERSHIP ou SELECT na tabela.

  • OWNERSHIP ou USAGE na DMF.

Como descartar a DMF do sistema

Descarte a DMF do sistema:

DROP FUNCTION governance.dmfs.count_positive_numbers(
  TABLE(
    NUMBER, NUMBER, NUMBER
  )
);
Copy

Limitações

Para obter mais informações, consulte a seção sobre limitações da qualidade de dados.