Utilisation de fonctions de métrique des données¶
Avant d’essayer chacun des exemples de cette rubrique, assurez-vous que le rôle que vous utilisez répond aux exigences nécessaires en matière de contrôle d’accès.
Mesurez maintenant : exemple de DMF système¶
Utilisez la syntaxe suivante pour appeler une DMF :
SELECT <data_metric_function>(<query>)
Où :
data_metric_function
Spécifie une DMF définie par le système ou par l’utilisateur.
query
Spécifie une requête SQL sur une table ou une vue.
Les colonnes de la requête doivent correspondre aux arguments des colonnes dans la signature de DMF.
Note
Ces systèmes DMFs ne suivent pas cette syntaxe, car ils n’acceptent pas d’arguments :
Appelez une DMF système pour commencer à mesurer immédiatement la qualité de vos données.
Par exemple, appelez la DMF système NULL_COUNT (fonction de métrique des données système) pour voir le nombre de valeurs NULL dans la colonne SSN (c’est-à-dire, numéro de sécurité socialeUS) :
USE ROLE data_engineer;
SELECT SNOWFLAKE.CORE.NULL_COUNT(
SELECT ssn
FROM hr.tables.empl_info
);
Vous pouvez interroger la table d’événements pour en voir les résultats. Pour plus d’informations, voir Afficher les résultats de la DMF.
Créez votre propre DMF¶
Utilisez la commande CREATE DATA METRIC FUNCTION pour créer vos propres DMFs.
Créez une DMF qui appelle la fonction COUNT pour renvoyer le nombre total de lignes qui ne contiennent pas de valeurs NULL lors de l’évaluation des trois premières colonnes de la table :
CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
arg_t TABLE(
arg_c1 NUMBER,
arg_c2 NUMBER,
arg_c3 NUMBER
)
)
RETURNS NUMBER
AS
$$
SELECT
COUNT(*)
FROM arg_t
WHERE
arg_c1>0
AND arg_c2>0
AND arg_c3>0
$$;
Pour un exemple qui fait référence à une table autre que celle à laquelle vous avez attribué la DMF, voir Exemple : Référence à une clé étrangère.
Note
Si vous souhaitez voir la définition de la DMF, utilisez la commande DESCRIBE FUNCTION (DMF).
Voir les propriétés d’une DMF¶
Décrivez la DMF pour en voir les propriétés :
DESC FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER, NUMBER, NUMBER
)
);
+-----------+---------------------------------------------------------------------+
| property | value |
+-----------+---------------------------------------------------------------------+
| signature | (ARG_T TABLE(ARG_C1 NUMBER, ARG_C2 NUMBER, ARG_C3 NUMBER)) |
| returns | NUMBER(38,0) |
| language | SQL |
| body | SELECT COUNT(*) FROM arg_t WHERE arg_c1>0 AND arg_c2>0 AND arg_c3>0 |
+-----------+---------------------------------------------------------------------+
Sécuriser la DMF¶
Faites de la DMF une DMF sûre :
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER,
NUMBER,
NUMBER
))
SET SECURE;
Dresser la liste de vos DMFs¶
Utilisez la commande SHOW DATA METRIC FUNCTIONS ou SHOW FUNCTIONS pour dresser la liste des DMFs de votre compte, votre base de données ou votre schéma :
SHOW DATA METRIC FUNCTIONS IN ACCOUNT;
Vous pouvez également interroger la vue FUNCTIONS Information Schema ou FUNCTIONS Account Usage pour obtenir la liste de vos DMFs dans la base de données spécifiée ou de votre compte, respectivement.
La colonne is_data_metric
s’il s’agit d’une fonction DMF.
Définir une balise sur une DMF¶
Utilisez la commande ALTER FUNCTION pour définir une balise sur une DMF :
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(NUMBER, NUMBER, NUMBER))
SET TAG governance.tags.quality = 'counts';
Planifiez l’exécution de vos DMFs¶
Vous pouvez planifier l’exécution de vos DMFs pour automatiser les mesures de qualité des données sur une table.
Snowflake utilise le rôle de propriétaire de la table, qui est le rôle disposant du privilège OWNERSHIP sur la table, pour appeler la DMF planifiée. Le rôle de propriétaire de la table doit disposer de ces attributions :
Le privilège USAGE sur la DMF définie par l’utilisateur et le privilège USAGE sur la base de données et le schéma qui stockent la DMF définie par l’utilisateur.
Le rôle de base de données DATA_METRIC_USER si la DMF est une DMF système.
Le privilège EXECUTE DATA METRIC FUNCTION sur le compte.
Le paramètre d’objet DATA_METRIC_SCHEDULE d’une table, d’une vue ou d’une vue matérialisée vous permet de planifier l’exécution de vos DMFs. Toutes les fonctions de métrique des données de la table ou de la vue suivent la même planification.
Il existe trois façons de planifier l’exécution de votre DMF :
Définissez la DMF pour qu’elle s’exécute après un certain nombre de minutes.
Utilisez une expression cron pour planifier l’exécution de la DMF à une fréquence particulière.
Utilisez un déclencheur pour planifier l’exécution de DMF en cas de modification d’une DML dans la table, par exemple l’insertion d’une nouvelle ligne dans la table. Cependant :
Le reclustering des tables ne déclenche pas l’exécution d’une DMF.
L’approche de déclenchement n’est disponible que pour certains types de tables. Pour plus d’informations, voir ALTER TABLE … SET DATA_METRIC_SCHEDULE.
Par exemple :
Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute toutes les 5 minutes :
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = '5 MINUTE';
Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute tous les jours à 8:00 AM :
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute à 8:00 AM les jours de la semaine uniquement :
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute trois fois par jour à 06:00, 12:00, et 18:00 UTC :
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
Réglez la fonction de métrique des données de sorte qu’elle s’exécute lorsqu’une opération DML générale telle que l’insertion d’une nouvelle ligne modifie la table :
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Vous pouvez utiliser la commande SHOW PARAMETERS pour visualiser la planification d’une DMF pour un objet de table pris en charge.
SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+ | key | value | default | level | description | type | +----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+ | DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC | | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING | +----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
Pour les objets de vue et de vue matérialisée, indiquez TABLE
comme domaine d’objet et vérifiez la planification comme suit :
SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
Note
Il y a un délai de 10 minutes entre le moment où vous modifiez la DMF d’une table et le moment où les changements de planification prennent effet sur les DMFs précédentes attribuées à la table. Cependant, les nouvelles affectations de DMF ne sont pas soumises au délai de 10 minutes. Planifiez soigneusement les opérations de planification de DMF et de suppression de DMF afin de les aligner sur les coûts de DMF prévus.
De plus, lorsque vous évaluez les résultats de DMF, par exemple en interrogeant la vue DATA_QUALITY_MONITORING_RESULTS, spécifiez la colonne measurement_time
de votre requête comme base pour l’évaluation. Il existe un processus interne qui initie l’évaluation de DMF, et des mises à jour de table, comme les opérations INSERT, peuvent survenir entre l’heure programmée et l’heure de la mesure. Lorsque vous utilisez la colonne measurement_time
, vous avez une évaluation plus précise des résultats de DMF, car l’heure de la mesure indique l’heure d’évaluation de la DMF.
Ajouter ou supprimer une DMF sur une table ou une vue¶
Utilisez une commande ALTER TABLE ou ALTER VIEW pour effectuer les opérations suivantes :
Ajouter une DMF à une table à l’aide de ALTER TABLE.
ALTER TABLE t ADD DATA METRIC FUNCTION governance.dmfs.count_positive_numbers ON (c1, c2, c3);
Supprimez une DMF d’une table à l’aide d’une commande ALTER TABLE.
ALTER TABLE t DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers ON (c1, c2, c3);
Note
Utilisez la commande ALTER VIEW pour ajouter une DMF dans une colonne de vue matérialisée ou pour supprimer une DMF d’une colonne de vue matérialisée.
Suivre les références des DMF¶
Vous pouvez interroger la vue Account Usage DATA_METRIC_FUNCTION_REFERENCES pour voir les références de la DMF dans votre compte ou appeler la fonction de table Information Schema DATA_METRIC_FUNCTION_REFERENCES pour identifier les DMFs associées à une table ou à une vue donnée ou les tables ou les vues associées à une DMF donnée.
Par exemple :
Renvoie une ligne pour chaque objet (table ou vue) pour lequel la DMF nommée count_positive_numbers
a été définie sur cette table ou cette vue :
USE DATABASE governance; USE SCHEMA INFORMATION_SCHEMA; SELECT * FROM TABLE( INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES( METRIC_NAME => 'governance.dmfs.count_positive_numbers' ) );
Renvoie une ligne pour chaque DMF affectée à la table nommée hr.tables.empl_info
:
USE DATABASE governance; USE SCHEMA INFORMATION_SCHEMA; SELECT * FROM TABLE( INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES( REF_ENTITY_NAME => 'hr.tables.empl_info', REF_ENTITY_DOMAIN => 'table' ) );
Appeler manuellement votre DMF¶
Utilisez la syntaxe suivante pour appeler une DMF :
SELECT <data_metric_function>(<query>)
Où :
data_metric_function
Spécifie une DMF définie par le système ou par l’utilisateur.
query
Spécifie une requête SQL sur une table ou une vue.
Les colonnes de la requête doivent correspondre aux arguments des colonnes dans la signature de DMF.
Note
Ces systèmes DMFs ne suivent pas cette syntaxe, car ils n’acceptent pas d’arguments :
Appelez directement la DMF et affichez les résultats :
SELECT governance.dmfs.count_positive_numbers(
SELECT c1,
c2,
c3
FROM t
);
Lorsque vous définissez une DMF sur une table ou une vue et que vous planifiez son exécution, vous pouvez effectuer une requête sur la vue construite à partir de la table d’événements pour afficher les résultats. Pour plus d’informations, voir Afficher les résultats de la DMF.
Afficher les résultats de la DMF¶
Pour voir les résultats de la DMF, vous devez d’abord gérer l’accès aux résultats, puis choisir comment afficher les résultats :
Gestion de l’accès aux résultats de la DMF¶
Vous avez trois options pour accéder aux résultats d’une DMF programmée. Elles sont détaillées dans la section suivante :
Option 1 : interroger la table d’événements dédiée
Option 2 : interroger la vue DATA_QUALITY_MONITORING_RESULTS, qui est une version aplatie de la table d’événements
Option 3 : appeler la fonction de table DATA_QUALITY_MONITORING_RESULTS
Selon la manière dont vous souhaitez gérer l’accès aux résultats de la DMF, accordez les rôles d’application système suivants à un autre rôle au niveau du compte :
Rôle de l’application |
Remarques |
---|---|
DATA_QUALITY_MONITORING_ADMIN |
Peut utiliser les options 1, 2 et 3. Un rôle auquel est attribué ce rôle d’application peut accorder les rôles d’application DATA_QUALITY_MONITORING_VIEWER et DATA_QUALITY_MONITORING_LOOKUP à d’autres rôles. Un utilisateur qui se voit accorder le rôle ACCOUNTADMIN peut accorder le rôle d’application DATA_QUALITY_MONITORING_ADMIN à d’autres rôles. |
DATA_QUALITY_MONITORING_VIEWER |
Options 2 et 3. |
DATA_QUALITY_MONITORING_LOOKUP |
Option 3 seulement. |
Par exemple, utilisez la commande GRANT APPLICATION ROLE pour attribuer le rôle d’application système DATA_QUALITY_MONITORING_VIEWER au rôle personnalisé analyst
:
USE ROLE ACCOUNTADMIN; GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE analyst;
Utilisez la commande REVOKE APPLICATION ROLE pour révoquer le rôle d’application système d’un rôle de compte.
Astuce
De plus, si vous souhaitez gérer l’accès aux résultats de DMFs système, accordez le rôle de base de données SNOWFLAKE.DATA_METRIC_USER au rôle de compte qui peut accéder aux résultats. Pour plus d’informations, voir GRANT DATABASE ROLE.
Options¶
Pour afficher les résultats d’une DMF programmée, choisissez l’une des options suivantes :
Option 2 : interroger la vue DATA_QUALITY_MONITORING_RESULTS
Option 3 : appeler la fonction de table DATA_QUALITY_MONITORING_RESULTS
- Option 1 : interroger la table d’événements dédiée
Cette option vous donne accès aux données brutes, et vous avez plus de liberté pour post-traiter les données à l’aide d’objets dérivés, tels que la création de vues, de fonctions de table ou de procédures stockées, en fonction de la manière dont vous souhaitez analyser les résultats. En outre, si vous créez ces objets dérivés, vous pouvez accorder l’accès à ces objets de manière sélective à différents rôles. Par exemple, un ingénieur des données peut accéder aux procédures stockées pour gérer l’approche permettant d’obtenir les résultats, et un analyste des données peut accéder à la vue pour analyser les résultats.
La table d’événements est nommée
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW
.Pour plus d’informations sur les colonnes de la table d’événements, voir Colonnes de table d’événements.
Pour un exemple représentatif d’interrogation de la table d’événements, voir le tutoriel sur la journalisation et le traçage.
- Option 2 : interroger la vue DATA_QUALITY_MONITORING_RESULTS
Cette option vous permet d’interroger la vue DATA_QUALITY_MONITORING_RESULTS, qui aplatit les données brutes de la table d’événements pour faciliter l’accès aux résultats de la DMF. En outre, cette option est préférable lorsque le post-traitement des données n’est pas nécessaire et que vous ne souhaitez pas accorder l’accès aux données brutes.
La vue existe dans le schéma LOCAL de la base de données partagée SNOWFLAKE :
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS
.Pour plus d’informations, voir la vue DATA_QUALITY_MONITORING_RESULTS.
Note
Le rôle de base de données SNOWFLAKE.GOVERNANCE_VIEWER n’a pas accès à la requête de la vue DATA_QUALITY_MONITORING_RESULTS.
- Option 3 : appeler la fonction de table DATA_QUALITY_MONITORING_RESULTS
Cette option vous permet d’appeler la fonction de table DATA_QUALITY_MONITORING_RESULTS pour afficher les résultats de la DMF. La fonction renvoie les mêmes colonnes que la vue DATA_QUALITY_MONITORING_RESULTS. Cependant, vous ne pouvez spécifier qu’une seule table lors de l’appel de la fonction. Cette option est idéale lorsque vous souhaitez limiter les résultats de la fonction de la métrique des données à une seule table et que vous ne souhaitez pas fournir d’accès aux mesures d’autres tables ou à la table d’événements.
En plus du rôle d’application SNOWFLAKE.DATA_QUALITY_MONITORING_LOOKUP, le rôle utilisé pour appeler la fonction de table DATA_QUALITY_MONITORING_RESULTS nécessite également les privilèges suivants :
OWNERSHIP ou SELECT sur la table.
OWNERSHIP ou USAGE sur la DMF.
Supprimer la DMF du système¶
Supprimez la DMF du système :
DROP FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER, NUMBER, NUMBER
)
);
Limitations¶
Pour plus d’informations, consultez la section sur les limitations de la qualité des données.