Toute l'actualité de la Data, Finance et IA.

Les Data Metric Functions Snowflake | SBI

Rédigé par Sybille | Apr 29, 2024 10:59:44 AM

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 …

 

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
20240409 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