Tutoriel : premiers pas avec les fonctions de métrique de données¶
Introduction¶
Vous pouvez effectuer ce tutoriel en utilisant une feuille de calcul dans Snowsight ou en utilisant un client CLI tel que SnowSQL. Il suffit de coller les exemples de code et de les exécuter.
Dans ce tutoriel, vous apprendrez à :
Créer une fonction de métrique des données personnalisée (DMF) pour mesurer la qualité des données.
Gérez la DMF pour optimiser l’utilisation du crédit sans serveur.
Surveillez l’utilisation du crédit sans serveur associée à l’appel de la DMFplanifiée.
Configurer le contrôle d’accès¶
Pour réaliser ce tutoriel, utilisez un seul rôle personnalisé qui dispose de tous les accès requis, notamment les suivants :
La création d’une base de données, qui permet ensuite de créer un schéma, de créer une DMF dans le schéma et de créer une table dans le schéma
Création d’un entrepôt pour effectuer des opérations de requête
Interrogation de la vue qui contient les résultats de l’appel à la DMF planifiée
Interrogation de la vue qui contient les informations sur l’utilisation des calculs sans serveur
Créez le rôle dq_tutorial_role
que vous utiliserez tout au long du tutoriel :
USE ROLE ACCOUNTADMIN; CREATE ROLE IF NOT EXISTS dq_tutorial_role;
Accordez des privilèges et attribuez le rôle d’application et les rôles de base de données au 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;
Créez un entrepôt pour interroger la table qui contient les données et accordez le privilège USAGE au rôle dq_tutorial_role
:
CREATE WAREHOUSE IF NOT EXISTS dq_tutorial_wh; GRANT USAGE ON WAREHOUSE dq_tutorial_wh TO ROLE dq_tutorial_role;
Confirmez les attributions du rôle dq_tutorial_role
:
SHOW GRANTS TO ROLE dq_tutorial_role;
Établissez une hiérarchie des rôles et attribuez le rôle à un utilisateur capable de réaliser ce tutoriel (remplacez la valeur jsmith
) :
GRANT ROLE dq_tutorial_role TO ROLE SYSADMIN; GRANT ROLE dq_tutorial_role TO USER jsmith;
Configuration des données¶
Pour faciliter la gestion des données et les DMF dans le cadre de ce tutoriel, créez une base de données spécifique pour contenir ces objets :
Créer une table¶
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)
);
Insérer des valeurs dans une table.¶
Ajoutez des données à la table :
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);
Créer et travailler avec des DMFs¶
Dans les sections suivantes, nous allons créer une DMF définie par l’utilisateur pour mesurer le nombre d’adresses e-mail non valides et procéder ensuite comme suit :
Planifiez l’exécution de la DMF toutes les 5 minutes.
Vérifiez les références de table de la DMF (trouvez les tables sur lesquelles la DMF est définie).
Interrogez une vue intégrée qui contient le résultat de l’appel à la DMF planifiée.
Supprimez la DMF de la table pour éviter toute utilisation inutile de crédit sans serveur.
Créer une DMF¶
Créez une fonction de métrique des données (DMF) pour obtenir le nombre d’adresses e-mail d’une colonne qui ne correspondent pas à l’expression régulière spécifiée :
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';
Définir la planification sur la table¶
La planification de la DMF définit le moment où toutes les DMFs de la table sont exécutées. Actuellement, 5 minutes est l’intervalle de temps le plus court possible :
ALTER TABLE customers SET DATA_METRIC_SCHEDULE = '5 MINUTE';
Note
Dans le cadre de ce tutoriel, la durée de la planification est fixée à 5 minutes. Cependant, après avoir optimisé vos cas d’utilisation de la DMF, expérimentez les autres paramètres de planification, tels que les expressions cron ou les événements déclencheurs associés aux opérations DML qui affectent la table.
Définir les DMFs sur la table et vérifiez les références¶
Associez la DMF à la table :
ALTER TABLE customers ADD DATA METRIC FUNCTION invalid_email_count ON (email);
Comme le planification est définie sur 5 minutes, nous devons attendre 5 minutes pour que Snowflake appelle la DMF et traite les résultats. Pour l’instant, nous pouvons vérifier que la DMF est associée à la table en appelant la fonction de table 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'));
Afficher les résultats de la DMF¶
Les résultats de l’appel à la DMF planifiée sont stockés dans la vue DATA_QUALITY_MONITORING_RESULTS. Pour déterminer le nombre d’adresses e-mail non valides, interrogez la vue DATA_QUALITY_MONITORING_RESULTS afin de connaître les résultats de l’appel de la DMF planifiée :
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;
Les résultats montrent que la colonne value
contient 1
. Ce nombre correspond à une adresse e-mail mal formatée, ce qui correspond à la première instruction INSERT de la section Insérer des valeurs dans une table..
Supprimer des DMFs de la table¶
Vous avez établi que la DMF fonctionne comme prévu sur la base de la définition de la DMF, de la planification et des résultats escomptés.
Pour éviter toute utilisation inutile de crédit sans serveur, supprimez la DMF de la table :
ALTER TABLE customers DROP DATA METRIC FUNCTION invalid_email_count ON (email);
Voir votre consommation de crédits sans serveur¶
L’appel à des fonctions de métrique des données planifiées (DMFs) nécessite des ressources de calcul sans serveur. Vous pouvez interroger la vue Account Usage DATA_QUALITY_MONITORING_USAGE_HISTORY pour voir le DMF coût de calcul sans serveur.
La vue ayant un temps de latence de 1 à 2 heures, attendez que ce délai soit écoulé avant d’effectuer une requête sur la vue. Vous pourrez revenir à cette étape ultérieurement.
Interrogez la vue et filtrez les résultats pour inclure l’intervalle de temps de votre DMFplanifiée :
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;
Nettoyage, résumé et ressources supplémentaires¶
Félicitations ! Vous avez terminé ce tutoriel avec succès.
Prenez quelques minutes pour passer en revue le résumé et les points clés abordés dans ce tutoriel.
Pensez à procéder au nettoyage en supprimant tous les objets que vous avez créés dans ce tutoriel. Pour en savoir plus, consultez les autres rubriques de la documentation Snowflake.
Résumé et points clés¶
En résumé, vous avez appris à faire ce qui suit :
Créer une DMF personnalisée pour mesurer la qualité des données et gérer la DMF afin d’optimiser l’utilisation des crédits sans serveur.
Surveillez l’utilisation du crédit sans serveur associée à l’appel de la DMFplanifiée.
Supprimer des objets du tutoriel¶
Si vous envisagez de répéter le tutoriel, vous pouvez conserver les objets que vous avez créés.
Sinon, supprimez les objets du tutoriel en procédant comme suit :
USE ROLE ACCOUNTADMIN;
DROP DATABASE dq_tutorial_db;
DROP WAREHOUSE dq_tutorial_wh;
DROP ROLE dq_tutorial_role;
Quelle est la prochaine étape ?¶
Continuez à vous renseigner sur Snowflake à l’aide des ressources suivantes :
Pour en savoir plus sur les DMFs, commencez par Introduction à la qualité des données et aux fonctions de métrique des données.
Complétez les autres tutoriels fournis par Snowflake dans le sujet Tutoriels Snowflake.