Implémenter l’application de schéma
L’application de schéma est une des principales fonctionnalités de Delta Lake, qui vous permet de maintenir l’intégrité et la cohérence des données en garantissant que les données écrites dans une table Delta respectent le schéma attendu. Cette fonctionnalité empêche des données erronées d’endommager le jeu de données, ce qui peut être utile dans les environnements de production où plusieurs processus ou utilisateurs peuvent écrire dans le même jeu de données. Pour implémenter l’application de schéma dans Delta Lake, effectuez les étapes suivantes :
Créer une table Delta avec un schéma défini
Créez une table Delta avec un schéma spécifique par programmation avec Spark SQL ou en utilisant l’API DataFrame. Vous trouverez ci-après un exemple montrant comment créer une table Delta avec un schéma défini en utilisant Spark SQL.
-- Create a Delta table using Spark SQL
CREATE TABLE my_delta_table_schema (
id INT,
name STRING,
age INT
);
Vous pouvez aussi utiliser des DataFrames pour écrire des données :
-- Insert valid data
INSERT INTO my_delta_table_schema (id, name, age)
VALUES
(1, 'Alice', 30),
(2, 'Bob', 25);
Appliquer un schéma sur des écritures
Une fois qu’une table Delta est configurée avec un schéma défini, Delta Lake applique automatiquement ce schéma à toutes les opérations d’écriture ultérieures. Si un DataFrame entrant ne correspond pas au schéma de la table Delta, l’opération d’écriture échoue. Vous trouverez ci-après un exemple montrant comment tester l’application d’un schéma sur des écritures.
-- Attempt to insert data with an invalid schema (missing 'age' field)
INSERT INTO my_delta_table_schema (id, name)
VALUES
(3, 'Charlie');
Gérer les non-correspondances de schéma
Vous pouvez utiliser l’instruction MERGE pour gérer les mises à jour et les insertions d’une manière qui prend en charge les modifications de schéma.
-- Define a temporary view with new data
CREATE OR REPLACE TEMP VIEW my_new_delta_table_schema AS
SELECT * FROM VALUES
(3, 'Charlie', 28),
(4, 'Diana', 35)
AS my_new_delta_table_schema(id, name, age);
-- Use MERGE to upsert data
MERGE INTO my_delta_table_schema AS target
USING my_new_delta_table_schema AS source
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET
target.name = source.name,
target.age = source.age
WHEN NOT MATCHED THEN
INSERT (id, name, age)
VALUES (source.id, source.name, source.age);
Si les types des données entrantes sont différents mais compatibles, vous pouvez utiliser la fonction de cast pour aligner les schémas.
-- Insert data with casting to match the schema
INSERT INTO my_delta_table_schema
SELECT
cast(id as INT),
cast(name as STRING),
cast(age as INT)
FROM my_new_delta_table_schema;
En suivant ces étapes, vous pouvez utiliser efficacement les fonctionnalités d’application de schéma de Delta Lake dans Azure Databricks pour maintenir la qualité et l’intégrité des données.