Stellen Sie Ihr dbt-Projekt auf Databricks um, ohne Modelle, Tests oder Geschäftslogik neu schreiben zu müssen.
von Khagay Nagdimov, Ismail Makhlouf und Shweta Verma
• Erfahren Sie, wie Sie Ihr bestehendes dbt-Projekt mit minimalen Codeänderungen von einem beliebigen Quell-Warehouse auf Databricks umstellen
• Gehen Sie die praktischen Schritte durch: Adapter-Einrichtung, Namespace-Mapping, Unterschiede in den SQL-Dialekten, Entwicklungs-Workflow und Produktionsplanung mit Lakeflow Jobs
• Erfahren Sie, wie Sie Ausgaben Modell für Modell validieren und die Umstellung sicher durchführen
Immer mehr Teams führen ihre dbt-Transformationen auf dem Databricks Lakehouse aus: einer offenen Plattform ohne Lock-in, mit vereinheitlichten Pipelines, integrierter Unity Catalog-Governance und einem hervorragenden Preis-Leistungs-Verhältnis.
Ihr dbt-Projekt funktioniert: Modelle kompilieren, Tests sind erfolgreich und Ihre Transformationslogik befindet sich in versioniertem SQL und YAML, anstatt fest in einem bestimmten Warehouse verdrahtet zu sein. Das offene Adapter-Framework von dbt ist genau für diese Entkopplung ausgelegt. Der Wechsel von einem Cloud Data Warehouse zu einem anderen ist daher meist nur eine Frage der Anpassung des Adapters und der Verbindungskonfiguration sowie einiger kleinerer Dialektanpassungen – und erfordert kein Umschreiben Ihres DAG oder Ihrer Geschäftslogik.
Databricks ermöglicht dies mit dem gemeinsam entwickelten dbt-databricks-Adapter, offenem Lakehouse-Speicher (Delta Lake und Apache Iceberg™), Unity Catalog und Lakeflow Jobs. Diese bieten Ihnen eine offene, einheitliche Plattform, auf der dbt vom ersten Tag an mit integrierter Governance und einem hervorragenden Preis-Leistungs-Verhältnis läuft – der ideale Ort also, um Ihre dbt-Workloads auszuführen. Aus diesem Grund führen bereits mehr als 3.000 Unternehmen dbt auf Databricks aus.
Wenn Sie einen Wechsel in Erwägung ziehen, gibt es eine gute Nachricht: Sie müssen Ihr Projekt nicht neu aufbauen. Dieser Beitrag zeigt Ihnen Schritt für Schritt, wie Sie ein funktionierendes dbt-Projekt auf Databricks umleiten, indem Sie den Adapter und das Profil austauschen, einige SQL-Unterschiede beheben und Ihre Transformationslogik innerhalb von dbt beibehalten.
Eine wiederkehrende Herausforderung bei Data-Warehouse-Migrationsprojekten ist der Versuch, alles auf einmal zu verschieben, was zu Verzögerungen und Engpässen führen kann. Ein besserer Ansatz besteht darin, mit der Transformationsschicht zu beginnen. Dies ist ein schneller Weg, um im Zuge einer Migration Kosteneinsparungen zu erzielen.
dbt-Projekte sind bereits modular und testbar. Das macht sie zu idealen Kandidaten für eine schrittweise Migration. Wenn Sie dbt auf Databricks umleiten, profitieren Sie von:

Umfang: Diese Anleitung beschreibt ausschließlich die Umleitung Ihrer dbt-Transformationsschicht. Es wird vorausgesetzt, dass sich Ihre Quelldaten bereits in Databricks befinden – bereitgestellt als Delta- oder Iceberg-Tabellen und in Unity Catalog registriert – und dass Ihre Kataloge und Schemata existieren. Die Migration der Daten selbst und die Einrichtung von Unity Catalog sind separate Schritte. Weitere Informationen hierzu finden Sie in den Migrationsleitfäden von Databricks und unter Lakebridge.
Stellen Sie vor dem Start sicher, dass Sie über Folgendes verfügen:
Das Modell, das wir in diesem Beispiel migrieren werden, ist eine Standard-Analyse-Faktentabelle, die auf zwei Quellmodellen aufbaut: orders und order_items. Es aggregiert Daten auf Bestellebene, um den Gesamtumsatz zu berechnen, und erstellt eine Liste der verkauften Produkte für jede einzelne Transaktion aus dem vergangenen Jahr.
Dieses Modell verwendet mehrere gängige SQL-Dialektmuster wie regexp_substr, div0 und object_construct, die sich zwischen Data Warehouses oft unterscheiden, was es zu einem hervorragenden Beispiel macht. Sobald Sie gelernt haben, wie Sie diese Muster hier handhaben, können Sie denselben Ansatz auf jedes andere Modell in Ihrem Projekt anwenden.
Dieser Teil behandelt die einmalige Migrationsarbeit, die die Installation des Adapters, das Zuordnen von Namespaces und den Umgang mit Dialektunterschieden umfasst.
Installieren des dbt-databricks-Adapters
Der dbt-databricks-Adapter ist das Bindeglied zwischen Ihrem dbt-Projekt und dem Databricks Lakehouse-Warehouse. Er übersetzt das kompilierte SQL von dbt in Databricks-kompatible Abfragen.
(Benutzer von dbt Platform: Wählen Sie „Databricks“ als Verbindungstyp in einer neuen Umgebung aus, wie in der dbt-Dokumentation beschrieben – der Adapter wird automatisch installiert.)
Fügen Sie ein Databricks-Ziel zu `profiles.yml` hinzu. Lassen Sie Ihr bestehendes Ziel unverändert; Sie benötigen es für die Validierung. Fügen Sie daneben ein zweites Ziel hinzu:
Verbindung überprüfen:
Sie sollten Folgendes sehen: Connection test: [OK connection ok].
Wenn Sie immer noch keine Verbindung herstellen können, befolgen Sie die Schritte zur Fehlerbehebung bei der Verbindung im Integrationsleitfaden für Databricks + dbt und in der dbt Databricks-Profilreferenz.
Profi-Tipp: http_path bestimmt, ob Abfragen auf einem SQL-Warehouse (empfohlen für dbt) oder einem All-Purpose-Cluster ausgeführt werden. SQL-Warehouses bieten ein besseres Preis-Leistungs-Verhältnis für SQL-intensive Workloads.
Databricks verwendet einen dreistufigen Namespace: catalog.schema.table. Aktualisieren Sie die sources.yml-Einträge, aus denen fct_orders liest:
Aktualisieren Sie schema.yml, um Tests einzuschließen
Profi-Tipp: Wenn Sie database: überspringen, landen Abfragen im Standardkatalog des Workspace. Legen Sie ihn explizit fest.
Führen Sie nun dbt compile für das Modell aus:
Unser fct_orders-Modell hat 3 Kompilierungsfehler verursacht (wie unten beschrieben), die alle mit dem Dialekt zusammenhängen. Dies ist zu erwarten. Obwohl diese drei typisch für die Dialektprobleme sind, auf die die meisten Projekte stoßen, sind sie nicht die ganze Geschichte: Größere Migrationen stoßen auch auf Strategien für inkrementelle Modelle, Snapshots und semistrukturierte Funktionen ohne direktes Äquivalent.
Wir verwenden absichtlich ein Beispielmodell, das auf dialektspezifischen Mustern wie REGEXP_SUBSTR mit Positionsparametern, DIV0 für sichere Division und OBJECT_CONSTRUCT für die JSON-Erstellung basiert – also Funktionen, die sich von Warehouse zu Warehouse unterscheiden. Auf diese Weise werden die anfänglichen dbt run-Fehler zu einem Leitfaden für den Konvertierungsprozess. Sie zeigen Ihnen, wie Sie diese in portable Makros und Databricks-freundliches SQL umwandeln, sodass Sie dieselben Korrekturen auf den Rest Ihres Projekts anwenden können. Zur Veranschaulichung führen wir Sie durch jeden Fehler, die Ursache und die Behebung. Bevor wir uns den Fehlern widmen, noch ein Hinweis zur Portabilität: Wenn eine Funktion ein portables Äquivalent hat, können Sie sie mit den datenbankübergreifenden Makros von dbt (dem dbt.*-Namespace) einmal schreiben, sodass sie auf jedem Warehouse kompiliert wird – eine Übernahme im Zuge Ihrer Standardisierung lohnt sich. Wir gehen jeden Fehler und seine Behebung durch und zeigen Ihnen dann, wie Sie die Konvertierung für ein großes Projekt automatisieren können.
Databricks folgt dem Apache-SQL-Dialekt und unterstützt nur 2 Parameter für REGEXP_SUBSTR
Behebung: Verwenden Sie die native regexp_extract()-Funktion von Databricks
Sie könnten diese Konvertierung auch von Genie Code durchführen lassen. Das Schließen solcher Dialektlücken ist genau seine Stärke. Wir führen alle drei Schritte manuell durch, damit Sie sehen, was sich ändert.
Ursache: Einige Warehouses verwenden DIV0, um 0 zurückzugeben, anstatt bei einer Division durch Null einen Fehler auszugeben.
Behebung: Fügen Sie dbt_utils zu Ihren Paketen hinzu und verwenden Sie die integrierte safe_divide-Funktion
Routine `object_construct` kann nicht aufgelöst werden
Behebung: Verwenden Sie die Databricks-Funktion named_struct
Kompilierung erneut ausführen:
Erfolgreich kompiliert. Gesamte Dialektänderungen für dieses Modell: dbt_utils package installed (für sichere Division), regexp_substr call converted to regexp_extract, div0-Aufruf ersetzt durch dbt_utils.safe_divide(), object_construct call converted durch named_struct.
Drei Funktionen manuell zu korrigieren, ist einfach. Ein echtes dbt-Projekt hat Hunderte oder Tausende von Modellen, und genau diese Dialektlücken schließen KI-Tools automatisch. Genie Code konvertiert dialektspezifisches SQL und führt diese Korrekturen direkt im Editor durch, sodass Sie Ihre Zeit mit der Überprüfung der Konvertierungen verbringen können, anstatt jede einzelne selbst zu schreiben.
Sobald die Kompilierung erfolgreich ist, führen Sie das Modell und alle vorhandenen Tests aus:
Sowohl die Modellerstellung als auch die Tests sind erfolgreich. Profi-Tipp:
equality- oder accepted_values-Tests fehlschlagen, liegt das fast immer an der Gleitkommapräzision und nicht an einem Logikfehler.Ein grünes dbt run beweist, dass SQL ausgeführt wird. Jetzt müssen wir die Ergebnisse des Legacy-Warehouses und von Databricks miteinander abgleichen. Verwenden Sie dbt-audit-helper, um einen zeilenweisen Vergleich durchzuführen.
Installation:
Vergleichen Sie fct_orders über beide Warehouses hinweg. In analyses/compare_fct_orders.sql:
Führen Sie es in Databricks aus (vorausgesetzt, Sie haben die Legacy-Ausgabe für den Vergleich in Databricks repliziert oder führen einen Warehouse-übergreifenden Vergleich durch):
Erwartetes Ergebnis:
Hinweis: Diese Beispiele decken die gängigsten Muster ab, sind aber nicht vollständig. Bei weiteren Abweichungen (z. B. String-Trimming, Sortierung oder benutzerdefiniertes UDF-Verhalten) legen Sie summarize=false fest, um Beispielzeilen zu materialisieren, überprüfen Sie einige Primärschlüssel, bei denen sich in_a und in_b unterscheiden, beheben Sie den Fehler im Modell oder Makro und führen Sie den Vorgang erneut aus, bis Sie eine 100-prozentige Übereinstimmung erhalten.
In unserem Durchlauf: fct_orders stimmte genau überein.
Anstatt eine separate Orchestrierungsebene für dbt zu verwalten, können Sie dbt zusammen mit Upstream-Ingestion und Downstream-Aktionen in einer einzigen Pipeline mit Lakeflow Jobs ausführen. dbt ist ein erstklassiger Task-Typ innerhalb von Jobs, und Sie benötigen weder einen externen Orchestrator noch ein benutzerdefiniertes Docker-Image.
Erstellen Sie den Job:
Was Jobs Ihnen standardmäßig bietet:

Sobald Sie Ihr dbt-Projekt validiert und auf Databricks bereitgestellt haben, besteht der nächste Schritt darin, den Produktions-Traffic kontrolliert auf Databricks zu verlagern, einen kurzen Rollback-Pfad beizubehalten und zu vermeiden, länger als nötig für zwei Warehouses zu bezahlen.
Nutzen Sie diese Checkliste:
profiles.yml so um, dass prod auf Databricks verweist – alle neuen Produktionsläufe schreiben nun in Databricks.system.billing.usage, um das Ausgabenprofil von Databricks zu bestätigen.Der Großteil der Arbeit, die Sie gerade erledigt haben, ist einmalig: die Adapterinstallation, das profiles.yml-Ziel und die Änderung des Quell-Namespace. Sobald diese eingerichtet sind, erfordert das Neuausrichten des nächsten Modells nur noch die inkrementellen Dialektkorrekturen.
Einige Muster erfordern mehr als nur einen Dialektwechsel, und Sie werden bei der Skalierung darauf stoßen:
Nutzen Sie für die komplexeren Aufgaben die vollständigen Migrationsleitfäden.
Migrieren Sie von dort aus in kleinen Schritten und arbeiten Sie in der DAG-Reihenfolge – zuerst Quellen, dann Staging, Intermediate und Marts, damit jede Charge sauber mit den bereits verschobenen Modellen validiert werden kann. Führen Sie beide Ziele parallel aus und nutzen Sie audit-helper, um jedes Modell zu vergleichen, bis alle übereinstimmen. Wenn das letzte Modell grün ist, stellen Sie das gesamte Projekt um. Dieser Leitfaden ist eine vereinfachte Anleitung zur Neuausrichtung. Der vollständige Umfang einer Migration wird in unseren öffentlichen Migrationsleitfäden behandelt.
Die Neuausrichtung von dbt auf Databricks ist eine praktische und risikoarme Möglichkeit, eine Warehouse-Migration zu starten. Ihre Modelle und Tests bleiben unverändert – Sie ändern lediglich den Ort, an dem sie ausgeführt werden. Zudem profitieren Sie von Open-Source-Formaten und -Standards wie Delta Lake und Apache Iceberg™, während Unity Catalog Governance und Lineage auf einer Plattform bietet, die auch für Ihre Downstream-KI-Arbeit genutzt werden kann. Beginnen Sie mit einem Modell, vergleichen Sie die Ergebnisse und erweitern Sie den Umfang, bis Sie sich bereit fühlen, Databricks als primäre Plattform für Ihr dbt-Projekt zu nutzen.
Bereit, es auszuprobieren?
Weitere Informationen zu dbt mit Databricks finden Sie im dbt-databricks-Adapter auf GitHub.
(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag
Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.