Un nouvel objet arrive dans snowflake… la Data Metric Function !
Vous pouvez utiliser des fonctions standards ou créer vos propres fonctions pour mesurer la qualité de vos données.
Quoi de mieux qu’un exemple pour découvrir cette nouvelle fonctionnalité ?
Partons sur le besoin basique mais récurrent de détection automatique des doublons.
Avec Snowflake, on commence souvent par attribuer des rôles :
use role accountadmin;
grant database role SNOWFLAKE.DATA_METRIC_USER to role sysadmin;
grant execute data metric function on account to role sysadmin;
grant application role snowflake.data_quality_monitoring_viewer to role sysadmin;
Allons dans notre contexte de travail :
USE ROLE SYSADMIN ;
USE DATABASE demo_db;
USE SCHEMA public;
Créons ensuite une table avec 1 doublon :
CREATE OR REPLACE TABLE region
AS
SELECT * FROM snowflake_sample_data.tpch_sf1.region
UNION ALL
(SELECT * FROM snowflake_sample_data.tpch_sf1.region limit 1)
;
Invoquons manuellement la fonction système de détection de doublons :
select snowflake.core.duplicate_count(select r_name from region);
Voici le résultat :
SNOWFLAKE.CORE.DUPLICATE_COUNT(SELECT R_NAME FROM PUBLIC.REGION)
1
Nous retrouvons bien 1 doublon.
Ajoutons un déclencheur sur notre table pour que les contrôles qualité s’exécutent lorsque les données changent :
ALTER TABLE region SET
DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Enfin, ajoutons la fonction détection des doublons sur notre table :
ALTER TABLE region
ADD DATA METRIC FUNCTION snowflake.core.duplicate_count
ON (r_name);
Il ne nous reste plus qu’à injecter de nouveaux doublons :
INSERT OVERWRITE INTO region
SELECT * FROM snowflake_sample_data.tpch_sf1.region
UNION ALL
(SELECT * FROM snowflake_sample_data.tpch_sf1.region limit 3);
Tips 🎁 : Le mot clé OVERWRITE permet de faire un truncate avant de faire un insert.
Il faut attendre quelques minutes avant de pouvoir invoquer le résultat.
Autre tips 🎁 : il s’agit du mot clé TABLE qui évite d’écrire SELECT * FROM …
Trop pratique ♥️
Récupérons donc le résultat de notre contrôle :
TABLE snowflake.local.data_quality_monitoring_results;
Cette table contient beaucoup de colonnes.
On va garder celles qui nous intéressent :
select measurement_time,
metric_database,
table_schema,
table_name,
metric_schema,
metric_name,
value
from snowflake.local.data_quality_monitoring_results;
Et on retrouve bien nos 3 doublons :
MEASUREMENT_TIME METRIC_DATABASE TABLE_SCHEMA TABLE_NAME METRIC_SCHEMA METRIC_NAME VALUE
2024–04–09 10:35:22.290 -0400 SNOWFLAKE PUBLIC REGION CORE DUPLICATE_COUNT 3
Bien sûr, on pourra se créer des alertes ou des dashboards à partir de ces données.
On pouvait déjà faire tout cela programmatiquement. C’est juste devenu plus facile ! 🎉
On n’oublie pas de faire le ménage derrière soit :
DROP TABLE region;
J’espère que vous allez user et abuser de ces fonctions bien pratiques pour surveiller la qualité des donnés.
Pour en savoir plus sur les DMF… RTFM 😁
https://docs.snowflake.com/en/user-guide/data-quality-working