Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Bereinigung und Überprüfung von Daten ist für die Sicherstellung der Qualität von Datenressourcen in einem Lakehouse von großer Bedeutung. In diesem Artikel werden die Produktangebote von Azure Databricks beschrieben, mit denen Sie die Datenqualität sicherstellen können. Außerdem finden Sie hier Empfehlungen zum Definieren von Geschäftslogik für das Implementieren von benutzerdefinierten Regeln.
Schemaerzwingung in Azure Databricks
Delta Lake bietet Semantik zur Schemaerzwingung und Einschränkungsprüfungen für Schreibvorgänge, die Garantien für die Datenqualität für Tabellen in einem Lakehouse bieten.
Durch die Schemaerzwingung wird sichergestellt, dass Daten, die in eine Tabelle geschrieben werden, einem vordefinierten Schema entsprechen. Die Regeln zur Schemaüberprüfung variieren je nach Vorgang. Weitere Informationen finden Sie unter Schemaerzwingung.
Für die Schemaentwicklung bietet Delta Mechanismen zum Ändern des Schemas und zum Entwickeln von Tabellen. Wägen Sie unbedingt sorgfältig ab, wann Sie die Schemaentwicklung verwenden, um verworfene Felder oder fehlerhafte Pipelines zu vermeiden. Ausführliche Informationen zum manuellen oder automatischen Aktualisieren von Schemas finden Sie unter Aktualisieren des Delta Lake-Tabellenschemas.
Tabellenconstraints
Einschränkungen können z. B. für die informativen Primär- und Fremdschlüssel gelten, sie können aber auch erzwungen werden. Siehe ADD CONSTRAINT Klausel.
Tabellenconstraints in Azure Databricks werden entweder erzwungen oder sind rein informativ.
Zu den erzwungenen Einschränkungen gehören NOT NULL und CHECK.
Zu den informativen Einschränkungen gehören Primär- und Fremdschlüsseleinschränkungen.
Weitere Informationen finden Sie unter Einschränkungen bei Azure Databricks.
Behandeln von NULL-Werten oder fehlenden Werten
NOT NULL kann für Delta-Tabellen erzwungen werden. Die Aktivierung ist nur für eine vorhandene Tabelle möglich, wenn die Spalte keine Datensätze mit einem NULL-Wert enthält. Sie verhindert, dass neue Datensätze mit NULL-Werten in eine Tabelle eingefügt werden.
Mustererzwingung
Mit regulären Ausdrücken (RegEx) können Sie erwartete Muster in einem Datenfeld erzwingen. Dies ist besonders hilfreich bei der Verwendung von Textdaten, die bestimmten Formaten oder Mustern entsprechen müssen.
Um ein Muster mithilfe von regulären Ausdrücken zu erzwingen, können Sie die Funktionen REGEXP oder RLIKE in SQL verwenden. Mit diesen Funktionen können Sie ein Datenfeld mit einem angegebenen RegEx-Muster abgleichen.
Hier ist ein Beispiel für die Verwendung der CHECK Einschränkung mit regex für die Mustererzwingung in SQL:
CREATE TABLE table_name (
column_name STRING CHECK (column_name REGEXP '^[A-Za-z0-9]+$')
);
Werterzwingung
Mithilfe von Einschränkungen können auch Wertebereiche für Spalten in einer Tabelle erzwungen werden. Dadurch wird sichergestellt, dass nur gültige Werte eingefügt oder aktualisiert werden dürfen, die innerhalb des angegebenen Bereichs liegen.
Zum Erzwingen einer Wertebereichseinschränkung können Sie die CHECK-Einschränkung in SQL verwenden. Mit der CHECK-Einschränkung können Sie eine Bedingung definieren, die für jede Zeile in der Tabelle mit TRUE ausgewertet werden muss.
Nachfolgend finden Sie ein Beispiel für die Verwendung der CHECK Einschränkung zum Erzwingen eines Wertbereichs in einer Spalte:
CREATE TABLE table_name (
column_name INT CHECK (column_name >= 0 AND column_name <= 100)
);
Definieren und Konfigurieren von Erwartungen mithilfe von Lakeflow Spark Declarative Pipelines.
Lakeflow Spark Declarative Pipelines ermöglicht Es Ihnen, Erwartungen beim Deklarieren materialisierter Ansichten oder Streamingtabellen zu definieren. Sie können Erwartungen konfigurieren, um bei Verstößen gewarnt zu werden und je nach Verstoß Datensätze verwerfen oder Workloads als fehlerhaft zu kennzeichnen. Weitere Informationen finden Sie unter Verwalten der Datenqualität mit Pipelineerwartungen.
Datenüberwachung
Azure Databricks bietet Dienste zur Überwachung der Datenqualität, mit denen Sie die statistischen Eigenschaften und die Qualität der Daten in allen Tabellen in Ihrem Konto überwachen können. Siehe Datenprofilerstellung.
Umwandeln von Datentypen
Beim Einfügen oder Aktualisieren von Daten in einer Tabelle wandelt Azure Databricks Datentypen um, sofern dies ohne Datenverluste sicher möglich ist.
Ausführliche Informationen zu Umwandlungsverhalten finden Sie in den folgenden Artikeln:
Benutzerdefinierte Geschäftslogik
Sie können mit Filtern und WHERE-Klauseln benutzerdefinierte Logik definieren, die fehlerhafte Datensätze unter Quarantäne stellt und verhindert, dass sie an nachgelagerte Tabellen weitergegeben werden. Mithilfe von CASE WHEN ... OTHERWISE-Klauseln können Sie bedingte Logik definieren, um Geschäftslogik ordnungsgemäß auf Datensätze anzuwenden, die auf vorhersehbare Weise die Erwartungen verletzen.
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;
Hinweis
Databricks empfiehlt, gefilterte Daten immer in einem separaten Schreibvorgang zu verarbeiten, insbesondere bei Verwendung des strukturierten Streamings. Die Verwendung von .foreachBatch zum Schreiben in mehrere Tabellen kann zu inkonsistenten Ergebnissen führen.
Beispielsweise verfügen Sie möglicherweise über ein Upstreamsystem, das nicht in der Lage ist, Werte zu codieren NULL , und daher wird der Platzhalterwert -1 verwendet, um fehlende Daten darzustellen. Anstatt benutzerdefinierte Logik für alle nachgeschalteten Abfragen in Azure Databricks zu schreiben, um Datensätze zu ignorieren, die -1 enthalten, können Sie eine CASE WHEN-Anweisung verwenden, um diese Datensätze dynamisch als Transformation zu ersetzen.
INSERT INTO silver_table
SELECT
* EXCEPT weight,
CASE
WHEN weight = -1 THEN NULL
ELSE weight
END AS weight
FROM bronze_table;