Ce document décrit la qualité automatique des données Dataplex, qui vous permet de définir et de mesurer la qualité de vos données. Vous pouvez automatiser l'analyse des données, les valider par rapport à des règles définies et consigner des alertes si vos données ne répondent pas aux exigences de qualité. Vous pouvez gérer les règles de qualité des données et les déploiements sous forme de code, améliorant ainsi l'intégrité des pipelines de production de données.
Vous pouvez commencer à utiliser les recommandations de règles de profilage des données Dataplex ou créer des règles personnalisées dans la console Google Cloud. Dataplex fournit des fonctionnalités de surveillance, de dépannage et d'alerte Cloud Logging qui sont intégrées à la qualité des données automatiques Dataplex.
Modèle conceptuel
Une analyse de données est une tâche Dataplex qui échantillonne les données de BigQuery et de Cloud Storage, et déduit différents types de métadonnées. Pour mesurer la qualité d'une table à l'aide de la qualité des données automatiques, vous créez un objet DataScan
de type data quality
. L'analyse ne s'exécute que sur une seule table BigQuery. L'analyse utilise les ressources d'un projet locataire Google. Vous n'avez donc pas besoin de configurer votre propre infrastructure.
Pour créer et utiliser une analyse de la qualité des données, procédez comme suit:
- Définition de la règle
- Exécution de la règle
- Surveillance et alertes
- Dépannage
Définition de la règle
Les règles de qualité des données associées à une analyse de la qualité des données définissent les attentes concernant les données. Vous pouvez créer des règles sur la qualité des données de différentes manières:
- Utiliser les recommandations du profilage de données Dataplex
- Utiliser les règles prédéfinies
- Créer des règles SQL personnalisées
Règles prédéfinies
Dataplex accepte deux catégories de règles prédéfinies: les règles appliquées au niveau des lignes ou les règles agrégées.
- Au niveau des lignes
Pour les règles de catégorie au niveau des lignes, l'attente est appliquée à chaque ligne de données. Chaque ligne réussit ou échoue indépendamment la condition. Par exemple,
column_A_value < 1
.Les vérifications au niveau des lignes nécessitent de spécifier un seuil de réussite. Lorsque le pourcentage de lignes transmettant la règle passe en dessous de la valeur de seuil, la règle échoue.
- Aggregate
Pour les règles d'agrégation, l'attente est appliquée à une seule valeur agrégée sur l'ensemble des données. (par exemple,
Avg(someCol) >= 10
) Pour réussir, la vérification doit renvoyer la valeur booléennetrue
. Les règles d'agrégation ne fournissent pas de nombre indépendant de réussites ou d'échecs pour chaque ligne.
Pour les deux catégories de règles, vous pouvez définir les paramètres suivants:
- Colonne à laquelle la règle s'applique.
- Dimension issue d'un ensemble de dimensions prédéfinies.
Le tableau suivant répertorie les types de règles d'agrégation et au niveau des lignes compatibles:
Type de règle (nom dans la console Google Cloud) |
Règle au niveau des lignes ou d'agrégation | Description | Types de colonnes acceptés | Paramètres spécifiques aux règles |
---|---|---|---|---|
RangeExpectation (Contrôle de la plage) |
Au niveau des lignes | Vérifiez si la valeur est comprise entre la valeur minimale et la valeur maximale. | Toutes les colonnes de type numérique, de date et d'horodatage. | Obligatoire:
|
NonNullExpectation (Vérification nulle) |
Au niveau des lignes | Vérifiez que les valeurs de la colonne ne sont pas NULL. | Tous les types de colonnes acceptés. | Obligatoire:
|
SetExpectation (Définir la vérification) |
Au niveau des lignes | Vérifiez si les valeurs d'une colonne font partie des valeurs spécifiées dans un ensemble. | Tous les types de colonnes acceptés, à l'exception de Record et Struct . |
Obligatoire:
|
RegexExpectation (Vérification des expressions régulières) |
Au niveau des lignes | Comparez les valeurs à une expression régulière spécifiée. | Chaîne | Obligatoire:
|
Uniqueness (Vérification de l'unicité) |
Aggregate | Vérifiez si toutes les valeurs d'une colonne sont uniques. | Tous les types de colonnes acceptés, à l'exception de Record et Struct . |
Obligatoire:
|
StatisticRangeExpectation (vérification statistique) |
Aggregate | Vérifiez si la mesure statistique donnée correspond aux attentes en termes de plage. | Tous les types de colonnes numériques acceptés. | Obligatoire:
|
Types de règles SQL personnalisées compatibles
Les règles SQL permettent d'étendre la validation avec une logique personnalisée. Il existe plusieurs types de règles :
Type de règle | Règle au niveau des lignes ou d'agrégation | Description | Types de colonnes acceptés | Paramètres spécifiques aux règles | Exemple |
---|---|---|---|---|---|
Condition de ligne | Au niveau des lignes | Spécifiez une attente pour chaque ligne en définissant une expression SQL dans une clause L'expression peut inclure une référence à une autre table, par exemple pour créer des vérifications de l'intégrité référentielle. |
Toutes les colonnes | Obligatoire:
|
grossWeight <= netWeight |
Expression SQL d'agrégation | Aggregate | Ces règles sont exécutées une fois par table. Fournissez une expression SQL qui renvoie une valeur booléenne L'expression SQL peut inclure une référence à une autre table à l'aide de sous-requêtes d'expression. |
Toutes les colonnes | Obligatoire:
|
Exemple d'agrégation simple: Utilisation d'une sous-requête d'expression pour comparer les valeurs d'une table différente: |
Assertion SQL | Aggregate | Une règle d'assertion utilise une requête de qualité des données pour rechercher les lignes qui ne répondent pas à une ou plusieurs conditions spécifiées dans la requête. Fournissez une instruction SQL qui est évaluée pour renvoyer les lignes correspondant à l'état non valide. Si la requête renvoie des lignes, la règle échoue. Omettez le point-virgule à la fin de l'instruction SQL. L'instruction SQL peut inclure une référence à une autre table à l'aide de sous-requêtes d'expression. |
Toutes les colonnes | Obligatoire:
|
Exemple d'agrégation simple pour s'assurer que Utilisation d'une sous-requête d'expression pour comparer les valeurs d'une table différente: |
Pour obtenir des exemples de règles, consultez Exemples de règles relatives à la qualité des données automatiques.
Pour connaître les fonctions SQL compatibles, consultez la documentation de référence sur GoogleSQL.
Dimensions
Les dimensions vous permettent d'agréger les résultats de plusieurs règles de qualité des données pour la surveillance et les alertes. Vous devez associer chaque règle de qualité des données à une dimension. Dataplex accepte les dimensions suivantes:
- Actualisation
- Volume
- Exhaustivité
- Validité
- Cohérence
- Justesse
- Unicité
Entrée saisie dans les règles
Tous les paramètres de valeur sont transmis à l'API en tant que valeurs de chaîne. Dataplex a besoin des entrées pour respecter le format spécifié de BigQuery.
Les paramètres de type binaire peuvent être transmis sous la forme d'une chaîne encodée en base64.
Type | Formats compatibles | Examples |
---|---|---|
Binaire | Valeur encodée en base64 | YXBwbGU= |
Code temporel | AAAA-[M]M-[J]J[( |T)[H]H:[M]M:[S]S[.F]] [time_zone] OU AAAA-[M]M-[J]J[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset] |
27/09/2014 12:30:00.45/08 |
Date | AAAA-M[M]-J[J] | 2014-09-27 |
Date/Heure | [H]H:[M]M:[S]S[.DDDDDD] | 12:30:00,45 |
DateTime | AAAA-[M]M-[J]J [[H]H:[M]M:[S]S[.DDDDDD]] | 27/09/2014 12:30:00.45 |
Paramètre de référence de données
Lorsque vous créez une règle SQL personnalisée, vous pouvez faire référence à une table de source de données et à tous ses filtres de conditions préalables en utilisant le paramètre de référence de données ${data()}
dans la règle, au lieu de mentionner explicitement la table source et ses filtres.
Les filtres de ligne, les pourcentages d'échantillonnage et les filtres incrémentiels sont des exemples de filtres de conditions préalables. Le paramètre ${data()}
est sensible à la casse.
Par exemple, supposons que vous ayez une table de source de données appelée my_project_id.dim_dataset.dim_currency
. Vous souhaitez exécuter une analyse incrémentielle de la qualité des données qui n'analyse que les nouvelles données quotidiennes. Un filtre de ligne qui filtre les entrées du jour, transaction_timestamp >= current_date()
, est appliqué à la table.
Une règle SQL personnalisée permettant de trouver les lignes avec discount_pct
pour aujourd'hui se présente comme suit:
discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())
Si vous utilisez le paramètre de référence des données, vous pouvez simplifier la règle:
discount_pct IN (SELECT discount_pct FROM ${data()})
Dans cet exemple, le paramètre ${data()}
fait référence à la table de la source de données avec les entrées du jour, my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date()
.
Dans cet exemple, le paramètre de référence de données ne fait référence qu'aux données incrémentielles.
Lorsque vous utilisez un alias dans une sous-requête pour faire référence à des colonnes de la table source, utilisez le paramètre de référence de données pour faire référence à la table source ou omettez la référence de la table. Pour faire référence aux colonnes de la table source, n'utilisez pas de référence de table directe dans la clause WHERE
.
Recommandations :
Utilisez le paramètre de référence des données:
discount_pct IN ( SELECT discount_pct FROM `my_project_id.dim_dataset.dim_currency` AS temp-table WHERE temp-table.transaction_timestamp = ${data()}.timestamp )
Omettez la référence de la table:
discount_pct IN ( SELECT discount_pct FROM `my_project_id.dim_dataset.dim_currency` AS temp-table WHERE temp-table.transaction_timestamp = timestamp )
Option déconseillée :
N'utilisez pas de référence de table directe:
discount_pct IN ( SELECT discount_pct FROM `my_project_id.dim_dataset.dim_currency` AS temp-table WHERE temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp )
Exécution de la règle
Vous pouvez planifier l'exécution des analyses de la qualité des données à un intervalle spécifique ou effectuer une analyse à la demande. Pour gérer les analyses de la qualité des données, vous pouvez utiliser l'API ou la console Google Cloud.
Lorsque vous exécutez une analyse de la qualité des données, Dataplex crée un job. Dans le cadre de la spécification d'une analyse de la qualité des données, vous pouvez définir le champ d'application d'une tâche comme suit:
- Table complète
- Chaque tâche valide l'ensemble de la table.
- Incrémentiel
- Chaque job valide des données incrémentielles. Pour déterminer les incréments, fournissez dans la table une colonne
Date
/Timestamp
qui peut être utilisée comme repère. En règle générale, il s'agit de la colonne sur laquelle la table est partitionnée.
Filtrer les données
Dataplex peut filtrer les données à analyser pour vérifier leur qualité à l'aide d'un filtre de ligne. La création d'un filtre de ligne vous permet de vous concentrer sur les données d'une période ou d'un segment spécifiques, comme une région spécifique. L'utilisation de filtres peut réduire la durée et les coûts d'exécution, par exemple en filtrant les données dont l'horodatage est antérieur à une certaine date.
Exemples de données
Dataplex vous permet de spécifier un pourcentage d'enregistrements de vos données à échantillonner pour l'analyse de la qualité des données. La création d'analyses de la qualité des données sur un échantillon de données plus petit peut réduire le temps d'exécution et le coût d'interrogation de l'ensemble de données complet.
Surveillance et alertes
Vous pouvez exporter les résultats de l'analyse vers une table BigQuery pour une analyse plus approfondie. Pour personnaliser les rapports, vous pouvez associer les données de la table BigQuery à un tableau de bord Looker. Vous pouvez créer un rapport agrégé en utilisant la même table de résultats pour plusieurs analyses.
Vous pouvez surveiller les tâches liées à la qualité des données à l'aide des journaux data_scan
et data_quality_scan_rule_result
de l'explorateur de journaux.
Pour chaque job de qualité des données, le journal data_scan
avec le champ data_scan_type
défini sur DATA_QUALITY
contient les informations suivantes:
- Source de données utilisée pour l'analyse des données.
- Détails d'exécution du job, tels que l'heure de création, l'heure de début, l'heure de fin et l'état du job.
- Résultat du job de qualité des données: réussite ou échec.
- Réussite ou échec au niveau de la dimension.
Chaque tâche réussie contient un journal data_quality_scan_rule_result
avec les informations détaillées suivantes sur chaque règle de cette tâche:
- Informations de configuration telles que le nom, le type, le type d'évaluation et la dimension de la règle
- Informations sur les résultats, telles que la réussite ou l'échec, le nombre total de lignes, le nombre de lignes transmis, le nombre de lignes nulles et le nombre de lignes évalués.
Les informations des journaux sont disponibles via l'API et la console Google Cloud. Vous pouvez utiliser ces informations pour configurer des alertes. Pour en savoir plus, consultez la page Définir des alertes dans Cloud Logging.
Résoudre les problèmes
Lorsqu'une règle échoue, Dataplex génère une requête qui renvoie toutes les colonnes de la table (pas seulement la colonne ayant échoué).
Limites
- Les résultats de l'analyse de la qualité des données ne sont pas publiés dans Data Catalog sous forme de tags.
- Les recommandations de règles ne sont disponibles que dans la console Google Cloud.
- Le choix des dimensions est fixé à l'une des sept dimensions prédéfinies.
- Le nombre de règles par analyse de la qualité des données est limité à 1 000.
Tarification
Dataplex utilise le SKU de traitement premium pour facturer la qualité des données automatiques. Pour en savoir plus, consultez les tarifs de Dataplex.
La publication des résultats sur la qualité des données automatiques dans le catalogue n'est pas encore disponible. Lorsqu'elle sera disponible, elle sera facturée au même tarif que le tarif de stockage des métadonnées du catalogue. Reportez-vous à la page Tarifs pour en savoir plus.
Le traitement premium de Dataplex pour la qualité automatique des données est facturé à la seconde avec une durée minimale d'une minute.
L'échec de l'analyse de la qualité des données n'entraîne aucuns frais.
Les frais dépendent du nombre de lignes, du nombre de colonnes, de la quantité de données que vous avez analysées, de la configuration des règles de qualité des données, des paramètres de partitionnement et de clustering de la table, et de la fréquence du balayage.
Plusieurs options permettent de réduire le coût des analyses automatiques de la qualité des données:
Séparez les frais liés à la qualité des données des autres frais dans le SKU de traitement premium Dataplex. Utilisez l'étiquette
goog-dataplex-workload-type
avec la valeurDATA_QUALITY
.Filtrez les frais regroupés. Utilisez les étiquettes suivantes:
goog-dataplex-datascan-data-source-dataplex-entity
goog-dataplex-datascan-data-source-dataplex-lake
goog-dataplex-datascan-data-source-dataplex-zone
goog-dataplex-datascan-data-source-project
goog-dataplex-datascan-data-source-region
goog-dataplex-datascan-id
goog-dataplex-datascan-job-id
Étape suivante
- Découvrez comment utiliser la qualité des données automatique.
- Apprenez-en plus sur le profilage des données.
- Découvrez comment utiliser le profilage des données.