Instruments wie DBT machen das Erstellen von SQL -Datenpipelines einfach und systematisch. Trotz der zusätzlichen Struktur und der klar definierten Datenmodelle können Pipelines dennoch komplex werden, was die Debugging -Probleme und die Validierung von Änderungen an Datenmodellen erschwert.
Die zunehmende Komplexität der Datentransformationslogik führt zu den folgenden Problemen:
- Herkömmliche Code -Überprüfungsprozesse Schauen Sie sich nur an Code Änderungen und schließen Sie die Datenauswirkungen dieser Änderungen aus.
- Datenauswirkungen, die sich aus Codeänderungen ergeben, sind schwer zu verfolgen. Bei weitläufigen DAGs mit verschachtelten Abhängigkeiten ist es äußerst zeitaufwändig oder nahezu unmöglich, wie und wo Datenauswirkungen auftreten.
Gitlab’s DBT DAG (Im obigen Bild angezeigt) ist das perfekte Beispiel für ein Datenprojekt, das bereits ein Kartenhaus ist. Stellen Sie sich vor, Sie versuchen, eine einfache SQL -Logikänderung in eine Spalte durch diese gesamte Abstammungsdag -DAG zu folgen. Die Überprüfung eines Datenmodell -Updates wäre eine entmutigende Aufgabe.
Wie würden Sie sich dieser Artwork der Überprüfung nähern?
Was ist Datenvalidierung?
Die Datenvalidierung bezieht sich auf den Prozess, um festzustellen, dass die Daten in Bezug auf die realen Anforderungen korrekt sind. Dies bedeutet, dass die Die SQL -Logik in einem Datenmodell verhält sich wie beabsichtigt, indem die Daten korrekt sind. Die Validierung wird normalerweise nach Änderung eines Datenmodells durchgeführt, z. B. als Teil eines Refaktors.
Eine einzigartige Bewertungsherausforderung
Daten haben Zustände und sind direkt von der Transformation beeinflusst, mit der sie generiert werden. Aus diesem Grund ist die Überprüfung von Datenmodelländerungen eine einzigartige Herausforderung, da beide Code Und Die Daten müssen überprüft werden.
Aus diesem Grund sollten Datenmodell -Aktualisierungen nicht nur auf Vollständigkeit, sondern auch den Kontext überprüft werden. Mit anderen Worten, dass die Daten korrekt sind und vorhandene Daten und Metriken nicht unbeabsichtigt verändert wurden.
Zwei Excessive der Datenvalidierung
In den meisten Datenteams beruht die Individual, die die Änderung vornimmt, auf institutionelles Wissen, Instinct oder frühere Erfahrungen, um die Auswirkungen zu bewerten und die Änderung zu validieren.
„Ich habe eine Änderung zu X vorgenommen. Ich glaube, ich weiß, wie die Auswirkungen sein sollten. Ich werde es überprüfen, indem ich y läuft.“
Die Validierungsmethode fällt normalerweise in einen von zwei Extremen, von denen keiner preferrred ist:
- Spotprüfung mit Abfragen und einigen hochrangigen Schecks wie Reihenzählungen und Schema. Es ist schnell, aber es besteht das Risiko, die tatsächlichen Auswirkungen zu fehlen. Kritische und stille Fehler können unbemerkt bleiben.
- Erschöpfende Überprüfung von jedem einzelnen nachgelagerten Modell. Es ist langsam und ressourcenintensiv und kann mit zunehmender Pipeline kostspielig sein.
Dies führt zu einem Datenüberprüfungsprozess, der unstrukturiert, schwer zu wiederholen ist und häufig stille Fehler einführt. Eine neue Methode ist erforderlich, mit der der Ingenieur eine präzise und gezielte Datenvalidierung durchführt.
Ein besserer Ansatz durch das Verständnis von Datenmodellabhängigkeiten
Um eine Änderung eines Datenprojekts zu validieren, ist es wichtig, die Beziehung zwischen den Modellen und dem Durchfluss des Datenprojekts zu verstehen. Diese Abhängigkeiten zwischen Modellen informieren uns, wie Daten übergeben und von einem Modell in ein anderes transformiert werden.
Analysieren Sie die Beziehung zwischen Modellen
Wie wir gesehen haben, können Datenprojekt -DAGs groß sein, aber eine Änderung des Datenmodells beeinflusst nur eine Untergruppe von Modellen. Durch die Isolierung dieser Untergruppe und die Analyse der Beziehung zwischen den Modellen können Sie die Komplexitätsschichten zurückziehen und sich nur auf die Modelle konzentrieren, die tatsächlich validiert werden müssen, wenn eine bestimmte SQL -Logikänderung geändert wird.
Die Arten von Abhängigkeiten in einem Datenprojekt sind:
Modell-to-Modell
Eine strukturelle Abhängigkeit, in der Spalten aus einem vorgelagerten Modell ausgewählt werden.
--- downstream_model
choose
a,
b
from {{ ref("upstream_model") }}
Spalten-zu-Säulen
Eine Projektionsabhängigkeit, die eine stromaufwärts gelegene Spalte auswählt, umbenannt oder transformiert.
--- downstream_model
choose
a,
b as b2
from {{ ref("upstream_model") }}
Mannequin-zu-Säulen
Eine Filterabhängigkeit, bei der ein nachgeschaltetes Modell ein stromaufwärts gelegenes Modell in einem The place, Be a part of oder einer anderen bedingten Klausel verwendet.
-- downstream_model
choose
a
from {{ ref("upstream_model") }}
the place b > 0
Das Verständnis der Abhängigkeiten zwischen den Modellen hilft uns, den Auswirkungsradius einer Datenmodell -Logikänderung zu definieren.
Identifizieren Sie den Aufprallradius
Wenn Sie Änderungen an SQL eines Datenmodells vornehmen, ist es wichtig zu verstehen, welche anderen Modelle möglicherweise beeinflusst werden (die Modelle, die Sie überprüfen müssen). Auf der hohen Ebene erfolgt dies durch Modell-zu-Modell-Beziehungen. Diese Untergruppe von DAG -Knoten wird als Aufprallradius bezeichnet.
In der folgenden DAG enthält der Aufprallradius Knoten B (das modifizierte Modell) und D (das nachgeschaltete Modell). In DBT können diese Modelle mit dem modifizierten+ Selector identifiziert werden.

Das Identifizieren modifizierter Knoten und nachgeschalteter Begin ist ein guter Anfang, und durch das Isolieren von Änderungen wie diese reduzieren Sie den potenziellen Datenvalidierungsbereich. Dies könnte jedoch immer noch zu einer großen Anzahl von nachgeschalteten Modellen führen.
Klassifizieren Typen Von SQL -Änderungen können Sie weiter dazu beitragen, die Modelle zu priorisieren, welche Modelle tatsächlich eine Validierung erfordern, indem Sie die Schwere der Änderung verstehen und Zweige mit sicheren Änderungen beseitigen, von denen bekannt ist, dass sie sicher sind.
Klassifizieren Sie die SQL -Änderung
Nicht alle SQL -Änderungen bilden das gleiche Risiko für nachgeschaltete Daten und sollten daher entsprechend kategorisiert werden. Durch die Klassifizierung von SQL -Änderungen können Sie Ihrem Datenüberprüfungsprozess einen systematischen Ansatz hinzufügen.
Eine SQL -Änderung in ein Datenmodell kann als eine der folgenden Klassifizierung klassifiziert werden:
Nicht brechensänderung
Änderungen, die sich nicht auf die Daten in nachgeschalteten Modellen auswirken, z. B. das Hinzufügen neuer Spalten, Anpassungen an die SQL -Formatierung oder Hinzufügen von Kommentaren usw.
-- Non-breaking change: New column added
choose
id,
class,
created_at,
-- new column
now() as ingestion_time
from {{ ref('a') }}
Partielles Veränderung
Änderungen, die sich nur auf nachgeschaltete Modelle auswirken, die auf bestimmte Spalten verweisen, z. B. das Entfernen oder Umbenennen einer Spalte; oder eine Spaltendefinition ändern.
-- Partial breaking change: `class` column renamed
choose
id,
created_at,
class as event_category
from {{ ref('a') }}
Veränderung brechen
Änderungen, die alle nachgeschalteten Modelle wie Filterung, Sortieren oder anderweitig die Struktur oder Bedeutung der transformierten Daten beeinflussen.
-- Breaking change: Filtered to exclude information
choose
id,
class,
created_at
from {{ ref('a') }}
the place class != 'inner'
Anwenden Sie eine Klassifizierung an, um den Umfang zu reduzieren
Nachdem diese Klassifizierungen der Aufprallradius und die Anzahl der validierten Modelle angewendet werden müssen, kann erheblich reduziert werden.

In der obigen DAG wurden die Knoten B, C und F modifiziert, was zu potenziell 7 Knoten führte, die validiert werden müssen (C bis E). Nicht jeder Zweig enthält jedoch SQL -Änderungen, die tatsächlich eine Validierung erfordern. Schauen wir uns jeden Zweig an:
Knoten C: Nicht brechen
C wird als nicht bahnbrechende Veränderung eingestuft. Daher müssen sowohl C als auch H nicht überprüft werden, sie können beseitigt werden.
Knoten B: Partiellesbrechende Veränderung
B wird aufgrund der Änderung der Spalte B.C1 als partielles Veränderung klassifiziert. Daher müssen D und E überprüft werden nur Wenn sie Spalte b.c1 verweisen.
Knoten F: Veränderung brechen
Die Modifikation zu Modell F wird als Bruchwechsel klassifiziert. Daher müssen alle nachgeschalteten Knoten (G und E) auf Auswirkungen überprüft werden. Beispielsweise kann Modell G Daten aus der modifizierten stromaufwärts gelegenen Spalte zusammenfassen
Die anfänglichen 7 Knoten wurden bereits auf 5 reduziert, die auf Datenauswirkungen überprüft werden müssen (B, D, E, F, G). Indem wir die SQL -Änderungen auf Spaltenebene inspizieren, können wir diese Zahl noch weiter reduzieren.
Vergrößern des Umfangs mit der Linie auf Säulenebene weiter
Brechen und nicht sprechende Änderungen sind leicht zu klassifizieren, aber wenn es darum geht, partielle Veränderungen zu inspizieren, müssen die Modelle auf Spaltenebene analysiert werden.
Schauen wir uns die teilweise brechensänderte Änderung in Modell B genauer an, in der die Logik der Spalte C1 geändert wurde. Diese Modifikation könnte möglicherweise zu 4 betroffenen nachgeschalteten Knoten führen: D, E, Ok und J. Nach der Verfolgung der Säule -Verwendung stromabwärts gelegen, kann diese Untergruppe weiter reduziert werden.

Nach Spalte B.C1 stromabwärts können wir Folgendes sehen:
- B.C1 → D.C1 ist eine Abhängigkeit von Spalten-zu-Säulen (Projektion).
- D.C1 → E ist eine Modell-zu-Säulen-Abhängigkeit.
- D → okay ist eine Modell-zu-Modell-Abhängigkeit. Da D.C1 jedoch nicht in okay verwendet wird, kann dieses Modell beseitigt werden.
Daher sind die Modelle, die in diesem Zweig validiert werden müssen, B, D und E zusammen mit der Bruchänderung von F und Downstream G sind die in diesem Diagramm zu validierten Gesamtmodelle F, G, B, D und E oder nur 5 von insgesamt 9 potenziell betroffenen Modellen.
Abschluss
Die Datenvalidierung nach einer Modelländerung ist schwierig, insbesondere bei großen und komplexen DAGs. Es ist leicht, stille Fehler zu verpassen, und die Durchführung einer Validierung wird zu einer entmutigenden Aufgabe. Datenmodelle fühlen sich oft wie schwarze Kästchen an, wenn es um nachgelagerte Auswirkungen geht.
Ein strukturierter und wiederholbarer Prozess
Durch die Verwendung dieser Änderungspalidierungstechnik können Sie Struktur und Genauigkeit in den Überprüfungsprozess einbringen, sodass sie systematisch und wiederholbar sind. Dies verringert die Anzahl der Modelle, die überprüft werden müssen, vereinfacht den Überprüfungsprozess und senkt die Kosten, indem nur Modelle validiert werden, die dies tatsächlich erfordern.
Bevor du gehst …
Dave ist ein leitender technischer Anwalt bei Reccewo wir ein Toolkit erstellen, um erweiterte Datenvalidierungs -Workflows zu aktivieren. Er freut sich immer über SQL, Information Engineering oder hilft den Groups dabei, sich mit den Herausforderungen der Datenvalidierung zu befassen. Verbinden Sie sich mit Dave auf LinkedIn.
Die Forschung für diesen Artikel wurde von meinem Kollegen Chen en lu (Popcorny).
