Utilisation des attentes pour mettre en œuvre des contrôles de qualité des données¶
Le renvoi d’une valeur à partir d’une fonction de métrique de données (DMF) fournit des informations utiles, mais il peut être difficile de savoir si cela indique un problème de qualité des données sans connaître ce que vous considérez comme acceptable pour vos données. Par exemple, vous pouvez considérer que des tableaux contenant moins de 10 valeurs NULLdans une colonne donnée réussissent le contrôle de qualité des données. Dans ce cas, vous attendez que la valeur soit inférieure à 10 et vous souhaitez seulement être averti si elle dépasse ce seuil.
Une attente vous permet de définir des critères indiquant si les données réussissent un contrôle de qualité effectué par une DMF. Lorsque la DMFrenvoie une valeur, celle-ci est comparée à ce critère afin de déterminer si les données ont réussi ou échoué au contrôle. Les valeurs de renvoi en échec sont signalées comme des violations des attentes afin que vous puissiez prendre les mesures appropriées en fonction des données.
L’instruction suivante crée l’attente selon laquelle la colonne C1
contient moins de 10 valeurs NULL.
ALTER VIEW v1
ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (C1)
EXPECTATION my_exp ( VALUE < 10);
Vous pouvez définir des attentes à la fois pour les DMFs système et les DMFs personnalisées.
Définir ce qui répond à l’attente¶
Une attente inclut une expression booléenne qui détermine si l’attente a été satisfaite ou non. Lorsque cette expression est évaluée à TRUE, cela signifie que le résultat de la DMF correspond à votre attente.
Dans une expression, le mot-clé VALUE
représente la valeur renvoyée par la DMF. Par exemple, supposons que vous ayez la définition suivante d’une attente :
EXPECTATION my_exp (VALUE < 5)
Snowflake remplace par la valeur VALUE
renvoyée par la DMF lors de l’évaluation de l’attente. Si la DMF a renvoyé 3
, l’attente serait satisfaite si l’expression était évaluée à TRUE.
Si une expression est évaluée à FALSE, Snowflake le signale comme une violation des attentes. Pour obtenir des informations sur le suivi de ces violations, voir Identifier les violations d’attente.
Une expression peut inclure les types d’opérateurs suivants :
Une expression ne peut pas faire référence à d’autres tableaux ou vues, ni à des fonctions définies par l’utilisateur (UDFs).
Créer une attente¶
Chaque association entre une DMF et un objet peuvent avoir une ou plusieurs attentes.
Vous pouvez ajouter une attente lorsque vous associez la DMFau tableau ou à la vue, ou l’ajouter ultérieurement à l’association. Vous pouvez également modifier une attente existante.
Après avoir ajouté une attente, vous pouvez tester manuellement cela sans avoir à attendre que la DMF s’exécute en fonction de sa planification.
Ajouter une attente lors de l’association d’une DMF¶
Vous utilisez une commande ALTERTABLE ou ALTERVIEW pour associer une DMF à un tableau ou à une vue. Vous pouvez ajouter des attentes à l’association dans la même instruction SQL qui crée l’association.
Par exemple, la syntaxe pour ajouter des attentes lors de l’association d’une DMF avec un tableau est la suivante. Les vues utilisent une syntaxe similaire. Cette prévisualisation présente la clause mise en évidence.
ALTER TABLE <table>
ADD DATA METRIC FUNCTION <dmf>
ON (<col_name> [ , ... ] [ , TABLE<table_name>( <col_name> [ , ... ] ) )
[ EXPECTATION <expectation_name> ( <expression> )
[, <expectation_name> ( <expression> ) [ , ... ] ] ]
Où :
expectation_name
est une chaîne utilisée pour identifier l’attente. Vous pouvez créer des attentes portant le même nom à condition qu’elles appartiennent à des associations différentes.expression
est une expression booléenne qui détermine si la DMF a renvoyé une valeur attendue. Voir Définir ce qui répond à l’attente.
- Exemple : Ajouter une seule attente
Supposons que vous associez la DMF système MAX à la vue
v1
afin de vérifier la valeur maximale dans la colonnec1
Vous prévoyez que la valeur maximale sera comprise entre 25 et 50.ALTER VIEW v1 ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.MAX ON (C1) EXPECTATION my_exp ( 25 < VALUE AND VALUE < 50);
Si la DMF MAX renvoie une valeur en dehors de cette plage de valeurs attendues, Snowflake l’enregistre comme une violation d’attente.
- Exemple : Ajouter plusieurs attentes
Supposons que vous souhaitiez être averti lorsqu’une table n’a pas été mise à jour depuis cinq minutes, puis de nouveau lorsqu’elle n’a pas été mise à jour depuis 30 minutes. Vous pouvez ajouter les attentes suivantes, puis vérifier quand ces attentes ont été enfreintes.
ALTER TABLE emp ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON (last_updated) EXPECTATION lessThan5Mins (VALUE < 300), lessThan30Mins (VALUE < 1800);
Ajouter une attente à une association existante¶
Vous utilisez une commande ALTERTABLE ou ALTERVIEW pour ajouter une attente à une association existante entre une DMF et la table ou la vue.
Par exemple, la syntaxe pour ajouter des attentes à une association entre une table et une DMF est comme suit. Les vues utilisent une syntaxe similaire. Cette prévisualisation présente la clause mise en évidence.
ALTER TABLE <table>
MODIFY DATA METRIC FUNCTION <dmf>
ON (<col_name> [ , ... ] [ , TABLE<table_name>( <col_name> [ , ... ] ) )
[ ADD EXPECTATION <expectation_name> ( <expression> )
[, <expectation_name> ( <expression> ) [ , ... ] ] ]
Où :
expectation_name
est une chaîne utilisée pour identifier l’attente. Vous pouvez créer des attentes portant le même nom à condition qu’elles appartiennent à des associations différentes.expression
est une expression booléenne qui détermine si la DMF a renvoyé une valeur attendue. Voir Définir ce qui répond à l’attente.
- Exemple
Supposons que vous ayez précédemment associé la DMF système NULL_COUNT à la colonne
c1``dans la table``my_table
. Pour ajouter une attente afin d’être averti lorsqu’il y a 10 valeurs NULL ou plus dans la colonnec1
, exécutez le code suivant :ALTER TABLE my_table MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1) ADD EXPECTATION my_exp (VALUE < 10);
Si le résultat de NULL_COUNT est de 15, il est signalé comme une violation des attentes.
Modifier une attente existante¶
Vous utilisez une clause MODIFYEXPECTATION pour modifier l’expression d’une attente que vous avez précédemment ajoutée à une association.
Par exemple, supposons que vous ayez ajouté précédemment l’attente my_exp
à l’association entre la table t1
et la DMF NULL_COUNT. Pour modifier l’attente afin qu’elle soit violée lorsqu’il y a 15 valeurs NULL ou plus dans la colonne c1
, exécutez l’instruction suivante :
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1)
MODIFY EXPECTATION my_exp (VALUE < 15);
L’expression précédente de l’attente est remplacée par VALUE < 15
.
Tester une attente¶
Après avoir ajouté des attentes, vous pouvez appeler la fonction système SYSTEM$EVALUATE_DATA_QUALITY_EXPECTATIONS pour vous assurer qu’elles ont été ajoutées correctement et déterminer si ces attentes sont actuellement violées.
Par exemple, supposons que vous ayez ajouté au moins une attente à l’association entre une DMF et la table t1
. Pour vérifier si ces attentes sont actuellement violées, exécutez l’instruction suivante :
SELECT *
FROM TABLE(SYSTEM$EVALUATE_DATA_QUALITY_EXPECTATIONS(
REF_ENTITY_NAME => 'my_db.sch.t1'));
Supprimer une attente¶
Utilisez une clause DROPEXPECTATION pour supprimer une attente d’une association et la retirer du système.
Par exemple, supposons que vous ayez ajouté précédemment l’attente my_exp
à l’association entre la colonne c1
dans la table t1
et la DMF NULL_COUNT. Pour supprimer le my_exp
de l’association et de la DMF, exécutez le code suivant :
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT on (c1)
DROP EXPECTATION my_exp;
Identifier les violations d’attente¶
Vous pouvez identifier les violations d’attente à l’aide des éléments suivants :
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW : un tableau d’événements dédié qui enregistre les résultats de la qualité des données brutes.
Vue DATA_QUALITY_MONITORING_EXPECTATION_STATUS : vue dans le schéma SNOWFLAKE.LOCAL qui contient les résultats aplatis.
Fonction DATA_QUALITY_MONITORING_EXPECTATION_STATUS : fonction de table qui renvoie les résultats attendus.
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW¶
Les résultats en matière de qualité des données sont enregistrés dans le tableau des événements dédié SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW.
Si l’association entre un objet et une DMF a une attente, deux lignes sont ajoutées à la table chaque fois que Snowflake calcule le résultat de la DMF. La première ligne enregistre des informations sur l’objet avec lequel la DMF est associée, la DMF elle-même, et le résultat du contrôle de qualité des données. La deuxième ligne enregistre des informations liées à l’attente définie sur l’association DMF, y compris si l’attente a été satisfaite ou violée. S’il y a plusieurs attentes, il y a une ligne pour chaque attente.
Le champ snow.data_metric.record_type`dans la colonne :code:`resource_attribute
indique si une ligne correspond à une attente. Ce champ a deux valeurs possibles :
EXPECTATION_VIOLATION_STATUS
: indique que la ligne correspond à une attente.EVALUATION_RESULT
: indique que la ligne correspond à l’évaluation de la DMF.
Si la ligne correspond à une attente, la colonne resource_attribute
contient également les champs suivants liés aux attentes :
snow.data_metric.expectation_id
: identificateur généré par le système.snow.data_metric.expectation_name
: nom de l’attente lorsqu’elle a été ajoutée à l’association.snow.data_metric.expectation_expression
: expression de l’attente.
Après avoir déterminé qu’une ligne correspond à l’évaluation d’une attente, vous pouvez consulter la colonne value
pour savoir si l’attente a été violée. Si TRUE, l’attente a été violée.
Vue DATA_QUALITY_MONITORING_EXPECTATION_STATUS¶
Le Vue DATA_QUALITY_MONITORING_EXPECTATION_STATUS qui existe dans le schéma SNOWFLAKE.LOCAL, aplatit les informations du tableau des événements afin de faciliter l’accès aux résultats DMF.
Fonction DATA_QUALITY_MONITORING_EXPECTATION_STATUS¶
La fonction de table :doc:`/sql-reference/functions/data_quality_monitoring_expectation_status`renvoie des lignes qui fournissent les mêmes informations que celles disponibles dans la vue DATA_QUALITY_MONITORING_EXPECTATION_STATUS. La fonction utilise un modèle de contrôle d’accès différent de celui de la vue.
Suivre l’utilisation des attentes¶
Snowflake suit toutes les attentes de votre compte. Vous pouvez :ref:`exécuter une fonction <label-expectations_monitor_function>`ou :ref:`interroger une vue ACCOUNT_USAGE <label-expectations_monitor_view>`pour surveiller l’utilisation des attentes, y compris pour effectuer les tâches suivantes :
Surveiller les objets ont une attente définie pour leur association avec une DMF.
Surveiller quelles DMFs ont une attente définie pour leur association avec un objet.
Déterminer s’il existe une attente définie pour une association spécifique entre un objet et une DMF.
Déterminer l’expression booléenne d’une attente pour mieux comprendre un contrôle de qualité des données.
Exécuter une fonction de suivi des attentes¶
Vous pouvez exécuter la fonction DATA_METRIC_FUNCTION_EXPECTATIONS pour afficher les attentes définies pour un objet spécifique, un DMFspécifique, ou l’association entre un objet et une DMF.
Exemple : des attentes qui existent pour un objet spécifique
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_EXPECTATIONS(
REF_ENTITY_NAME => 'my_table',
REF_ENTITY_DOMAIN => 'table'));
Exemple : les attentes qui existent pour une DMFspécifique
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_EXPECTATIONS(
METRIC_NAME => 'SNOWFLAKE.CORE.NULL_COUNT'));
Exemple : les attentes qui existent pour une association spécifique entre un objet et une DMF
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_EXPECTATIONS(
METRIC_NAME => 'SNOWFLAKE.CORE.NULL_COUNT',
REF_ENTITY_NAME => 'my_table',
REF_ENTITY_DOMAIN => 'table'));
Interroger une vue pour suivre les attentes¶
Le Vue DATA_METRIC_FUNCTION_EXPECTATIONS dans le schéma ACCOUNT_USAGE contient toutes les attentes de votre compte. Vous pouvez interroger la vue pour suivre l’utilisation des attentes dans votre compte et déterminer l’expression booléenne de chaque attente.
Exemple : renvoyer toutes les attentes de votre compte Snowflake
SELECT * FROM snowflake.account_usage.data_metric_function_expectations
ORDER BY expectation_name;
Exemple : identifier les attentes pour une fonction de métrique des données spécifique
SELECT expectation_name,
ref_database_name as object_database,
ref_schema_name as object_schema,
ref_entity_name as object_name
FROM snowflake.account_usage.data_metric_function_expectations
WHERE
metric_database_name = 'SNOWFLAKE' AND
metric_schema_name = 'CORE' AND
metric_name = 'ROW_COUNT'
ORDER BY expectation_name;