Tutorial: Introdução às funções de métricas de dados

Introdução

Você pode concluir este tutorial usando uma planilha no Snowsight ou um cliente CLI como SnowSQL. Basta colar os exemplos de código e executá-los.

Ao fim deste tutorial, você terá aprendido a:

  • Criar uma função de métricas de dados (DMF) personalizada para medir a qualidade dos dados.

  • Gerenciar a DMF para otimizar o uso de crédito sem servidor.

  • Monitorar o uso de crédito sem servidor associado à chamada da DMF agendada.

Configuração do controle de acesso

Para concluir este tutorial, use uma única função personalizada que tenha todo o acesso necessário, incluindo seguinte:

  • Criação de um banco de dados, que posteriormente permitirá criar um esquema, criar uma DMF no esquema e criar uma tabela no esquema

  • Criar um warehouse para executar operações de consulta

  • Consultar a exibição com os resultados da chamada da DMF agendada

  • Consultar a exibição com informações de uso de computação sem servidor

Crie a função dq_tutorial_role a ser usada durante todo o tutorial:

USE ROLE ACCOUNTADMIN;
CREATE ROLE IF NOT EXISTS dq_tutorial_role;
Copy

Conceda os privilégios, a função de aplicativo e as funções de banco de dados à dq_tutorial_role:

GRANT CREATE DATABASE ON ACCOUNT TO ROLE dq_tutorial_role;
GRANT EXECUTE DATA METRIC FUNCTION ON ACCOUNT TO ROLE dq_tutorial_role;
GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE dq_tutorial_role;
GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE dq_tutorial_role;
GRANT DATABASE ROLE SNOWFLAKE.DATA_METRIC_USER TO ROLE dq_tutorial_role;
Copy

Crie um warehouse para consultar a tabela com os dados e conceder o privilégio USAGE na função à função dq_tutorial_role:

CREATE WAREHOUSE IF NOT EXISTS dq_tutorial_wh;
GRANT USAGE ON WAREHOUSE dq_tutorial_wh TO ROLE dq_tutorial_role;
Copy

Confirme as concessões para a função dq_tutorial_role:

SHOW GRANTS TO ROLE dq_tutorial_role;
Copy

Estabeleça uma hierarquia de funções e conceda a função a um usuário que possa concluir este tutorial (substitua o valor jsmith):

GRANT ROLE dq_tutorial_role TO ROLE SYSADMIN;
GRANT ROLE dq_tutorial_role TO USER jsmith;
Copy

Configuração de dados

Para facilitar o gerenciamento dos dados e da DMF para este tutorial, crie um banco de dados dedicado para conter estes objetos:

Criação de uma tabela

USE ROLE dq_tutorial_role;
CREATE DATABASE IF NOT EXISTS dq_tutorial_db;
CREATE SCHEMA IF NOT EXISTS sch;

CREATE TABLE customers (
  account_number NUMBER(38,0),
  first_name VARCHAR(16777216),
  last_name VARCHAR(16777216),
  email VARCHAR(16777216),
  phone VARCHAR(16777216),
  created_at TIMESTAMP_NTZ(9),
  street VARCHAR(16777216),
  city VARCHAR(16777216),
  state VARCHAR(16777216),
  country VARCHAR(16777216),
  zip_code NUMBER(38,0)
);
Copy

Insira os valores em uma tabela

Adicione dados à tabela:

USE WAREHOUSE dq_tutorial_wh;

INSERT INTO customers (account_number, city, country, email, first_name, last_name, phone, state, street, zip_code)
  VALUES (1589420, 'san francisco', 'usa', 'john.doe@', 'john', 'doe', 1234567890, null, null, null);

INSERT INTO customers (account_number, city, country, email, first_name, last_name, phone, state, street, zip_code)
  VALUES (8028387, 'san francisco', 'usa', 'bart.simpson@example.com', 'bart', 'simpson', 1012023030, null, 'market st', 94102);

INSERT INTO customers (account_number, city, country, email, first_name, last_name, phone, state, street, zip_code)
  VALUES
    (1589420, 'san francisco', 'usa', 'john.doe@example.com', 'john', 'doe', 1234567890, 'ca', 'concar dr', 94402),
    (2834123, 'san mateo', 'usa', 'jane.doe@example.com', 'jane', 'doe', 3641252911, 'ca', 'concar dr', 94402),
    (4829381, 'san mateo', 'usa', 'jim.doe@example.com', 'jim', 'doe', 3641252912, 'ca', 'concar dr', 94402),
    (9821802, 'san francisco', 'usa', 'susan.smith@example.com', 'susan', 'smith', 1234567891, 'ca', 'geary st', 94121),
    (8028387, 'san francisco', 'usa', 'bart.simpson@example.com', 'bart', 'simpson', 1012023030, 'ca', 'market st', 94102);
Copy

Crie e trabalhe com DMFs

Nas seções a seguir, criaremos uma DMF definida pelo usuário para medir a contagem de endereços de e-mail inválidos e, posteriormente, fazer o seguinte:

  • Agende a DMF para executar a cada 5 minutos.

  • Verifique as referências de tabela da DMF (encontre as tabelas em que a DMF está definida).

  • Consulte uma exibição integrada com o resultado da chamada da DMF agendada.

  • Remova a definição da DMF da tabela para evitar o uso de crédito sem servidor desnecessário.

Criar uma DMF

Crie uma função de métricas de dados (DMF) para retornar o número de endereços de e-mail em uma coluna que não corresponda à expressão regular especificada:

CREATE DATA METRIC FUNCTION IF NOT EXISTS
  invalid_email_count (ARG_T table(ARG_C1 STRING))
  RETURNS NUMBER AS
  'SELECT COUNT_IF(FALSE = (
    ARG_C1 REGEXP ''^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$''))
    FROM ARG_T';
Copy

Defina o cronograma na tabela

O cronograma de DMF define quando todas as DMFs na tabela são executadas. Atualmente, 5 minutos é o menor intervalo possível:

ALTER TABLE customers SET DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

Nota

Para fins do tutorial, o cronograma é definido para 5 minutos. No entanto, após otimizar seus casos de uso da DMF, experimente outras configurações de cronograma, como expressões cron ou eventos de acionamento associados às operações de DML que afetam a tabela.

Defina as DMFs na tabela e confira as referências

Associe a DMF à tabela:

ALTER TABLE customers ADD DATA METRIC FUNCTION
  invalid_email_count ON (email);
Copy

Como o cronograma é definido para 5 minutos, precisamos esperar 5 minutos para que o Snowflake chame a DMF e processe os resultados. Por enquanto, podemos verificar se a DMF está associada à tabela chamando a função de tabela Information Schema DATA_METRIC_FUNCTION_REFERENCES:

SELECT * FROM TABLE(INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
  REF_ENTITY_NAME => 'dq_tutorial_db.sch.customers',
  REF_ENTITY_DOMAIN => 'TABLE'));
Copy

Visualize os resultados da DMF:

Os resultados da chamada da DMF agendada são armazenados na exibição DATA_QUALITY_MONITORING_RESULTS. Para determinar o número de endereços de e-mail inválidos, consulte a exibição DATA_QUALITY_MONITORING_RESULTS para ver os resultados da chamada da DMF agendada:

SELECT scheduled_time, measurement_time, table_name, metric_name, value
FROM SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS
WHERE TRUE
AND METRIC_NAME = 'INVALID_EMAIL_COUNT'
AND METRIC_DATABASE = 'DQ_TUTORIAL_DB'
LIMIT 100;
Copy

Os resultados mostram que a value coluna contém 1. Este número corresponde a um endereço de e-mail com formato incorreto, que corresponde à primeira instrução INSERT na seção Insira os valores em uma tabela.

Remova a definição das DMFs da tabela

Você estabeleceu que a DMF está funcionando conforme o esperado com base na definição da DMF, o cronograma e os resultados esperados.

Para evitar o uso desnecessário de crédito sem servidor, remova a definição da DMF da tabela:

ALTER TABLE customers DROP DATA METRIC FUNCTION
  invalid_email_count ON (email);
Copy

Visualização de seu consumo de crédito sem servidor

Chamar funções de métricas de dados agendadas (DMFs) requer recursos de computação sem servidor. Você pode consultar a exibição Account Usage DATA_QUALITY_MONITORING_USAGE_HISTORY para ver o custo da DMF de computação sem servidor.

Como a visualização tem uma latência de 1 a 2 horas, aguarde esse tempo passar antes de consultar a exibição. Você pode retornar a esta etapa mais tarde.

Consulte a exibição e filtre os resultados para incluir o intervalo de sua DMF agendada:

USE ROLE dq_tutorial_role;
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_QUALITY_MONITORING_USAGE_HISTORY
WHERE TRUE
AND START_TIME >= CURRENT_TIMESTAMP - INTERVAL '3 days'
LIMIT 100;
Copy

Limpeza, resumo e recursos adicionais

Parabéns! Você concluiu este tutorial com sucesso.

Reserve alguns minutos para ver o resumo e os principais pontos abordados neste tutorial.

Considere fazer uma limpeza descartando os objetos criados neste tutorial. Saiba mais revisando outros tópicos na documentação do Snowflake.

Resumo e pontos principais

Em resumo, você aprendeu a fazer o seguinte:

  • Criar uma DMF personalizada para avaliar a qualidade dos dados e gerenciar a DMF para otimizar o uso de crédito sem servidor.

  • Monitorar o uso de crédito sem servidor associado à chamada da DMF agendada.

Descarte os objetos do tutorial

Se você planeja repetir o tutorial, pode manter os objetos que criou.

Caso contrário, descarte os objetos do tutorial da seguinte forma:

USE ROLE ACCOUNTADMIN;
DROP DATABASE dq_tutorial_db;
DROP WAREHOUSE dq_tutorial_wh;
DROP ROLE dq_tutorial_role;
Copy

Qual é o próximo passo?

Continue aprendendo sobre o Snowflake com os seguintes recursos: