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;
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;
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;
Confirme as concessões para a função dq_tutorial_role
:
SHOW GRANTS TO ROLE dq_tutorial_role;
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;
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)
);
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);
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';
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';
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);
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'));
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;
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);
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;
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;
Qual é o próximo passo?¶
Continue aprendendo sobre o Snowflake com os seguintes recursos:
Saiba mais sobre as DMFs começando por Introdução à qualidade de dados e funções de métricas de dados.
Conclua os outros tutoriais fornecidos pela Snowflake no tópico Tutoriais Snowflake.