Nettoyez et validez les données avec le traitement par batch ou en Stream
Le nettoyage et la validation des données sont essentiels pour garantir la qualité des assets de données dans un lakehouse. Databricks fournit plusieurs fonctionnalités pour la qualité des données, ainsi que des modèles pour définir vos propres règles personnalisées.
Application des schémas sur Databricks
Delta Lake fournit une sémantique pour appliquer des vérifications de schéma et de contraintes à l'écriture, ce qui offre des garanties en matière de qualité des données pour les tables dans un lakehouse.
L'application des schémas garantit que les données écrites dans une table adhèrent à un schéma prédéfini. Les règles de validation de schéma varient selon l'opération. See application des schémas.
Pour gérer l'évolution des schémas, Delta fournit des mécanismes pour apporter des modifications aux schémas et faire évoluer les tables. Il est important d'examiner attentivement quand utiliser l'évolution des schémas pour éviter les champs supprimés ou les pipelines défaillants. Pour plus de détails sur la mise à jour manuelle ou automatique des schémas, voir Mettre à jour les schémas de table avec l'évolution des schémas.
Contraintes de table
Les contraintes peuvent prendre la forme de contraintes de clé primaire et de clé étrangère informationnelles, ou de contraintes appliquées. Voir Ajouter une clause de contrainte.
Les contraintes de table sur Databricks sont soit appliquées, soit informatives.
Les contraintes appliquées incluent les contraintes NOT NULL et CHECK.
Les contraintes d'information incluent les contraintes de clé primaire et de clé étrangère.
Voir Contraintes sur Databricks.
Gérer les valeurs nulles ou manquantes.
**NOT NULL** peut être appliqué aux tables Delta. Il ne peut être activé sur une table existante si aucun enregistrement existant dans la colonne n'est nul, et empêche l'insertion de nouveaux enregistrements avec des valeurs nulles dans une table.
Application du modèle
Les expressions régulières (regex) peuvent être utilisées pour faire respecter les modèles attendus dans un champ de données. C'est particulièrement utile lorsqu'il s'agit de données textuelles qui doivent respecter des formats ou des modèles spécifiques.
Pour appliquer un motif à l'aide d'expressions régulières, vous pouvez utiliser les fonctions REGEXP ou RLIKE dans SQL. Ces fonctions vous permettent de faire correspondre un champ de données à un modèle d'expression régulière spécifié.
Voici un exemple d'utilisation de la contrainte CHECK avec des regex pour l'application de modèles en SQL :
CREATE TABLE table_name (
column_name STRING CHECK (column_name REGEXP '^[A-Za-z0-9]+$')
);
Application des valeurs
Les contraintes peuvent être utilisées pour appliquer des plages de valeurs sur les colonnes d'une table. Cela garantit que seules les valeurs valides dans la plage spécifiée peuvent être insérées ou mises à jour.
Pour appliquer une contrainte de plage de valeurs, vous pouvez utiliser la contrainte CHECK en SQL. La contrainte CHECK vous permet de définir une condition qui doit être vraie pour chaque ligne de la table.
Voici un exemple d'utilisation de la contrainte CHECK pour appliquer une plage de valeurs sur une colonne :
CREATE TABLE table_name (
column_name INT CHECK (column_name >= 0 AND column_name <= 100)
);
Définir et configurer les attentes à l’aide des LakeFlow Pipelines
Les LakeFlow Pipelines vous permettent de définir des attentes lors de la déclaration de vues matérialisées ou de tables de streaming. Vous pouvez choisir de configurer des attentes pour vous avertir des violations, supprimer les enregistrements non conformes ou faire échouer les charges de travail en fonction des violations. Consultez Gérer la qualité des données avec les attentes de pipeline.
monitoring des données
Databricks fournit des services de monitoring de la qualité des données, qui vous permettent de surveiller les propriétés statistiques et la qualité des données dans toutes les tables de votre compte. See profilage des données.
Convertir les types de données
Lors de l'insertion ou de la mise à jour de données dans une table, Databricks effectue le transtypage des types de données lorsqu'il peut le faire en toute sécurité sans perdre d'information.
Consultez les articles suivants pour plus de détails sur les comportements de casting :
Logique métier personnalisée
Vous pouvez utiliser des filtres et des clauses WHERE pour définir une logique personnalisée qui met en quarantaine les enregistrements incorrects et les empêche de se propager aux tables en aval. Les clauses CASE WHEN ... OTHERWISE vous permettent de définir une logique conditionnelle pour appliquer avec souplesse la logique métier aux enregistrements qui violent les attentes de manière prévisible.
DECLARE current_time = now()
INSERT INTO silver_table
SELECT * FROM bronze_table
WHERE event_timestamp <= current_time AND quantity >= 0;
INSERT INTO quarantine_table
SELECT * FROM bronze_table
WHERE event_timestamp > current_time OR quantity < 0;
Databricks recommande toujours de traiter les données filtrées comme une opération d'écriture distincte, surtout lors de l'utilisation de Structured Streaming. L'utilisation de .foreachBatch pour écrire dans plusieurs tables peut entraîner des résultats incohérents.
Par exemple, vous pourriez avoir un système en amont qui n'est pas capable d'encoder des valeurs NULL, et donc la valeur d'espace réservé -1 est utilisée pour représenter les données manquantes. Plutôt que d'écrire une logique personnalisée pour toutes les requêtes en aval dans Databricks afin d'ignorer les enregistrements contenant -1, vous pourriez utiliser une instruction `case when` pour remplacer dynamiquement ces enregistrements comme une transformation.
INSERT INTO silver_table
SELECT
* EXCEPT weight,
CASE
WHEN weight = -1 THEN NULL
ELSE weight
END AS weight
FROM bronze_table;