Taggen, Nachverfolgen und Optimieren Sie jedes dbt-Modell – von der Kostenzuordnung über Performance-Debugging bis hin zur Umgebungsüberwachung – mit einer einzigen Konfigurationszeile oder Genie.
von Heeren Sharma, Lennart Reschke und JooHo Yeo
Archived. This article has not been updated since the publish date above. The dynamic nature of information means that previously accurate content can become outdated or even obsolete over time. Readers are advised to exercise due diligence and cross-check any information found in this blog post before making decisions or adopting any practices based on said information.
Ihr dbt-Projekt führt jede Nacht 80 Modelle aus. Die Lagerkosten haben sich im letzten Quartal verdoppelt. Die Modellleistung variiert stark, und die Auswirkungen der neuesten Optimierungen sind unklar. Finanzen fragt, welches Team verantwortlich ist. Sie öffnen den Abfrageverlauf und sehen ... 80 identische Zeilen mit der Bezeichnung 'Databricks Dbt'. Viel Glück.
Mit Query Tags (jetzt in der öffentlichen Vorschau) können Datenteams jetzt von sofort einsatzbereiten automatisch eingefügten Tags profitieren, wie z. B. dbt_model_name, die jeden Durchlauf bereichern. Sie können auch eigene benutzerdefinierte Tags – Team, Kostenstelle, Umgebung usw. – an jede Abfrage anhängen, die Ihre Pipeline generiert.
Tags werden in system.query.history aufgezeichnet, sodass Kostenzuordnung, Performance-Debugging und Workload-Überwachung mit einer einfachen SQL-Abfrage vereinfacht werden (vollständige Details finden Sie in der Dokumentation).
In diesem Blog wird ein vollständiges Open-Source-dbt-Projekt beschrieben, das Query Tags durchgängig demonstriert: von der Konfiguration bis hin zu Kostenzuordnungs-Dashboards. Alle hier beschriebenen Informationen sind als GitHub-Repository verfügbar, das Sie klonen und in Ihrem eigenen Workspace bereitstellen können, oder Sie können Genie fragen.
Der dbt-databricks Adapter (Version 1.11+) unterstützt nativ Abfrage-Tags. Es gibt drei Ebenen, auf denen Tags angewendet werden können, wobei jede Ebene auf der vorherigen aufbaut:
Zusätzlich zu Ihren benutzerdefinierten Tags fügt dbt-databricks automatisch Metadaten zu jeder Modellausführung hinzu:
Tag | Beispielwert | Warenbezeichnung |
@@dbt_model_name | fct_daily_usage_by_sku | Das ausgeführte dbt-Modell |
@@dbt_materialized | Tabelle | Materialisierungsstrategie (Tabelle, Ansicht, inkrementell, Metric_View) |
@@dbt_core_version | 1.11.6 | dbt-core-Version |
@@dbt_databricks_version | 1.12.0a1 | dbt-databricks Adapterversion |
Dank dieser automatischen Tags erhalten Sie Einblick in jedes Modell ohne Konfiguration – der Adapter übernimmt dies für Sie.
Der einfachste Ansatz: Fügen Sie einem bestimmten Ziel in Ihrem dbt-Profil ein query_tags hinzu. Jede Abfrage im Projekt erbt diese Tags automatisch.
Beispielsweise kennzeichnet diese einzelne Zeile jede Abfrage mit vier Dimensionen: Wem gehört sie (Team), wohin gehen die Kosten (Costcenter), zu welcher Pipeline sie gehört (Projektname) und in welcher Umgebung sie ausgeführt wird (env).
Für eine detailliertere Zuordnung können Sie Tags für bestimmte Modelle in dbt_project.yml oder für die Modellkonfiguration in der SQL-Definition angeben.
Tags auf Modellebene werden mit Tags auf Profilebene zusammengeführt. Wenn beide denselben Schlüssel definieren, hat der Wert auf Modellebene Vorrang.
Nach der Ausführung von dbt run wird jede SQL-Anweisung in system.query.history angezeigt, wobei die Spalte query_tags als MAP<STRING, STRING> ausgefüllt ist. Sie können sie mit der Standardsyntax für den Kartenzugriff abfragen:
Dadurch werden alle mit Tags versehenen Abfragen der letzten sieben Tage zurückgegeben. Die benutzerdefinierten und automatisch eingefügten Tags werden in einzelne Spalten extrahiert und können dann aggregiert werden.
Sie finden die Abfrage-Tags für die ausgeführte Abfrage auch in der Benutzeroberfläche für den Abfrageverlauf oder in der Benutzeroberfläche für SQL Warehouse Monitoring.

Unten rechts im Abfrageprofil sehen Sie die von Ihnen definierten Abfrage-Tags. Sie erhalten alle erforderlichen Informationen auf einen Blick.

Mit Query Tags können Sie die detaillierte Nutzungszuordnung direkt über SQL-Abfragen bestimmen, sodass keine manuelle Protokollanalyse oder Aufteilung von Warehouse-Ressourcen erforderlich ist.
Sie können diese Frage auf zwei Arten beantworten: Fragen Sie Genie in einfacher Sprache nach einer Ad-hoc-Untersuchung oder schreiben Sie die SQL-Datei selbst, um ein wiederholbares Ergebnis für das Dashboard zu erhalten. Beide lesen aus denselben system.query.history-Daten.

Genie schreibt und führt die entsprechende Abfrage aus, und Sie können die Folgefragen weiter eingeben, ohne SQL zu berühren.
Beide Pfade geben dasselbe Bild zurück. In unserem Referenzprojekt dominieren die vier Mart-Tabellen (materialisiert als Tabelle) die Rechenzeit, während Staging-Ansichten und Messwertansichten nahezu sofort verfügbar sind. Dadurch erfahren Sie sofort, worauf sich Optimierungsmaßnahmen konzentrieren sollten.

Unser Referenzprojekt umfasst ein KI/BI-Dashboard, das system.query.history abfragt, die nach den projektspezifischen Abfrage-Tags gefiltert wird. Das Ergebnis: Die Pipeline, die Rechnungsdaten analysiert, verfolgt auch ihre eigenen Kosten – sie füttert Query Tags selbst.
Das Dashboard umfasst:
In unserem Referenzprojekt machten die vier Mart-Modelle 92 % der Rechenzeit aus. Ohne Query Tags waren diese Erkenntnisse nicht sichtbar.

Das Erstellen dieses Dashboards selbst dauert mit Genie Code Minuten: Fragen Sie nach der Rechenzeit pro dbt-Modell aus system.query.history, gefiltert durch Ihre Abfrage-Tags, und es schreibt die SQL und stellt die Visuals zusammen. Wenn Sie lieber direkt zum fertigen Ergebnis springen möchten, wird das Dashboard auch im Referenzprojekt enthalten und mit einem Databricks-Paket zusammen mit dem DBT-Job bereitgestellt (eine detaillierte Anleitung finden Sie im Github-Repository).
Databricks-Metrikansichten (verfügbar ab Version dbt-databricks1.12+) sind ein neuer Materialisierungstyp, der wiederverwendbare Geschäftssemantiken in Form von Dimensionen und Kennzahlen direkt im Unity-Katalog definiert (siehe vollständige Dokumentation). Sie können Abfrage-Tags wie jedes andere Modell tragen, indem Sie den Konfigurationsparameter query_tags verwenden:
Beachten Sie den Unterschied: query_tags sind an die SQL-Abfragen angehängt, die die Metrikansicht erstellen oder aktualisieren (nach system.query.history verfolgt), während databricks_tags Unity-Katalog-Tags auf dem Objekt selbst sind (für Governance und Ermittlung). Erstere dient der Nachverfolgung auf Abfrageebene, während letztere auf Unity-Katalogobjektebene für die allgemeine Datenerkennung eingesetzt wird.
In diesem Artikel haben wir den ganzheitlichen Prozess zum Aufbau einer soliden FinOps-Praxis behandelt, bei der Query Tags die Grundlage für die Kostenzuordnung bilden. Hier erfahren Sie, was wir beim Erstellen des Referenzprojekts und beim Gespräch mit Power-Benutzern von dbt:
Das vollständige Referenzprojekt ist auf GitHub verfügbar: github.com/databricks-solutions/dbt-query-tags
So starten Sie:
Tauschen Sie Werte für Ihr eigenes Team und Ihre Kostenstellen ein. Das Muster funktioniert für jedes dbt-Projekt auf Databricks.
Klonen Sie das Repository noch heute! Mit einer Zeile in Ihrem Profil erhalten Sie die Sichtbarkeit der Nutzungszuordnung auf Modellebene für Ihr gesamtes Lager.
(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.