Blog
dbt Quicktip: Verwenden von deprecation_date zur Verbesserung Ihrer Modellverwaltung

Einführung
In einem früheren Artikel haben wir einige der neuen dbt-Funktionen im Zusammenhang mit Model Governance, Data Mesh und Multiprojektbereitstellungen besprochen ( Datenverträge und Schemaerzwingung mit dbt ). Ein bestimmter Parameter, der bei der Kommunikation über mehrere Projekte eine große Rolle spielen kann, wurde jedoch ausgelassen: deprecation_date. Durch die Verwendung in Ihren Projektmodellen wird das Änderungsmanagement einfacher und die Pläne und Zeitpläne für langfristigen Support und Wartung sind allen Verbrauchern bekannt.
Wie funktioniert das?
Zur Verwendung des deprecation_date zu verwenden, müssen wir nur den Parameter in der Modelldefinitions-.yml-Datei festlegen. Er sollte als Datum formatiert sein und kann auch einen Offset von UTC enthalten.
Wenn ein Projekt auf ein Modell (oder eine Version) verweist, das/die veraltet ist oder dessen Verfallsdatum überschritten wurde, wird eine Warnung ausgegeben. Wenn es sich um ein Modell handelt, für das eine neuere Version verfügbar ist, wird dies ebenfalls mitgeteilt. Ziemlich einfach, oder?
Praktische Übungen
Wir verwenden dieses Repository als Beispiel.
Hier haben wir eine einfache DAG mit einem Staging Model, einem Intermediate und ein paar Marts. In den nächsten Abschnitten werden wir uns mit einigen möglichen Konfigurationen befassen, mit den Warnungen, die wir erhalten würden, und damit, wie wir sicherstellen können, dass sie nicht ignoriert werden, indem wir die Warnungen in Fehler umwandeln.
Vergangenheit Abschaffungsdatum
Für den Anfang ist die einfachste Konfiguration die Einstellung des deprecation_date direkt auf der Modellebene festzulegen, ohne Modellversionierung.
Nehmen wir an, wir möchten ein deprecation_date für unser Zwischenmodell festlegen möchten, würde es so aussehen.
Dieses Datum liegt in der Vergangenheit (wenn man bedenkt, dass heute der 03.11.2023 ist). Sobald es also festgelegt ist und wir unsere Pipeline erneut ausführen, würden wir zwei Arten von Warnungen erhalten: eine, die besagt, dass das Modell veraltet ist, und die zweite, die besagt, dass andere Modelle in unserem Projekt von veralteten Modellen abhängen.
Um dies zu beheben, müssten wir deaktivieren das veraltete Modell und ändern Sie die Verweise. Da wir jedoch nur ein Zwischenmodell haben, lassen wir es so, wie es ist.
Zukünftig abschaffungs_datum mit einer neuen Modellversion
Gehen wir nun zu einem etwas komplexeren Setup über: Wir erstellen eine neue Version für unser Zwischenmodell und setzen ein deprecation_date in der Zukunft, auf der Versions-Ebene.
In diesem Fall würden wir eine andere Art von Warnung erhalten, die besagt, dass das Modell ein deprecation_date gesetzt und eine neue Version verfügbar. Außerdem erfahren Sie, wie Sie die neue Version referenzieren können.
Vergangenheit abschaffungs_datum mit einer neuen Modellversion
Nehmen wir schließlich an, dass das Datum aus der vorigen Einrichtung verstrichen ist, so dass jetzt das deprecation_date in der Vergangenheit liegt und wir eine neuere Version zur Verfügung haben. Die Warnung würde sich in eine energischere ändern, sagen wir mal.
Um das Problem zu beheben, müssen wir zwei verschiedene Dinge ändern:
1 - Deaktivieren Sie die alte Version des Zwischenmodells und stoßen Sie die neueste Version an.
2 - Erhöhen Sie die Versionen der Schiedsrichter in den Karts.
Warnungen in Fehler umwandeln
Wir sind einige mögliche Konfigurationen und Warnungen durchgegangen, die wir erhalten konnten. Das Problem ist jedoch, dass während der Ausführung nur Warnungen ausgegeben werden - und wir alle wissen, dass Warnungen so lange wie möglich ignoriert werden, bis sie die Ausführung der Pipeline verhindern. Um sicherzustellen, dass dies bei unserem Projekt nicht passiert, können wir bestimmte Arten von Warnungen als Fehler definieren und so sicherstellen, dass die deprecation_date wird nicht ignoriert.
Der einfachste Weg ist, die Option DBT_WARN_ERROR_OPTIONS Umgebungsvariable mit den richtigen Warnungstypen . Weitere Informationen über die verfügbaren Optionen finden Sie unter hier .
DBT_WARN_ERROR_OPTIONS = {"include": ["DeprecatedModel","DeprecatedReference"]}
Hinweis: Es gibt auch andere Möglichkeiten, dies einzustellen, entweder über die Befehlszeile oder die Datei profiles.yml. Insbesondere wenn Sie dbt Core verwenden, können Sie dies auf eine andere Weise einstellen.
Jetzt werden die Warnungen zu Fehlern, und Sie müssen sicherstellen, dass das deprecation_date nicht ignoriert wird.
Fazit
Wir haben einige mögliche Szenarien und Setups mit dbt untersucht deprecation_date und Modellversionierung, aber natürlich können die Dinge noch viel komplexer werden, mit abhängiger Modellversionierung und Multiprojektabhängigkeiten.
Je früher Sie die neuen Funktionen von dbt nutzen und die Konzepte verinnerlichen, desto schneller werden Sie die Vorteile einer dezentralen Datenverwaltung nutzen können, um datengestützte Entscheidungen zu treffen.
Verfasst von
Lucas Ortiz
I've always been fascinated by technology and problem-solving. Great challenges are what keep me motivated, I rarely accept that a task can’t be done, it’s only a matter of finding new paths to solve the puzzle.
Unsere Ideen
Weitere Blogs
Contact



