dbt-Projekte in Snowflake¶
dbt Core ist ein Open-Source-Datentransformationstool und -Framework, das Sie zum Definieren, Testen und Bereitstellen von SQL-Transformationen verwenden können. Mit dbt Projects on Snowflake können Sie vertraute Snowflake-Features verwenden, um Ihre dbt Core-Projekte zu erstellen, zu bearbeiten, zu testen, auszuführen und zu verwalten. Ein dbt-Projekt ist ein Verzeichnis, das eine dbt_project.yml
-Datei und eine Reihe von Dateien enthält, die dbt-Assets definieren, wie z. B. Modelle und Quellen.
Sie können Workspaces in Snowsight verwenden, um mit dbt-Projektdateien und -verzeichnissen zu arbeiten und dann ein Projekt als DBT PROJECT-Objekt auf Schemaebene bereitzustellen. Sie können auch SQL verwenden, um mit dbt-Projektobjekten zu arbeiten. Führen Sie Snowflake-CLI-Befehle aus, um die Bereitstellung und Ausführung in Ihre CI/CD-Workflows zu integrieren, und nutzen Sie Aufgaben, um dbt-Projektausführungen zu planen und zu orchestrieren. Und nicht zuletzt stehen Ihnen Snowflake-Überwachungstools zum Prüfen, Verwalten und Optimieren von Projektausführungen zur Verfügung.
Verwenden von Arbeitsbereichen für dbt Projects on Snowflake¶
Arbeitsbereiche in Snowsight bieten eine webbasierte integrierte Entwicklungsumgebung (IDE) für dbt-Projekte, die sich mit einem Git-Repository verbinden und synchronisieren können. Jeder Arbeitsbereich für dbt Projects on Snowflake kann ein einzelnes dbt-Projekt oder mehrere dbt-Projekte darstellen, je nachdem, wie Sie Ihre Dateien und Ordner organisieren.
Sie können einen Arbeitsbereich für dbt Projects on Snowflake zum Visualisieren, Testen und Ausführen von dbt-Projekten direkt in Snowflake verwenden. Sie können den Arbeitsbereich auch mit einem dbt-Projektobjekt in Snowflake verbinden, sodass Sie Objekte innerhalb des Arbeitsbereichs erstellen und aktualisieren können. Arbeitsbereiche bieten außerdem eine schnelle Möglichkeit, ein neues dbt-Projekt zu initialisieren, das die erforderlichen Dateien und Verzeichnisse für ein dbt-Projekt erstellt, einschließlich der Datei:file:dbt_project.yml
.
Neben der Unterstützung von dbt-Projekten bieten Arbeitsbereiche einen einheitlichen Editor, mit dem Sie Code über mehrere Dateitypen und Projekte in Snowflake hinweg erstellen, organisieren und verwalten können. Weitere Informationen dazu finden Sie unter Workspaces.
Erläuterungen zu dbt-Projektobjekten¶
Ein DBT PROJECT ist ein Objekt auf Schemaebene, das versionierte Quelldateien für Ihr dbt-Projekt in Snowflake enthält. Sie können ein dbt-Projektobjekt mit einem Arbeitsbereich verbinden oder das Objekt unabhängig von einem Arbeitsbereich erstellen und verwalten.
Sie können dbt-Projektobjekte wie andere Objekte auf Schemaebene in Snowflake CREATE, ALTERund DROP. dbt-Projektobjekte unterstützen außerdem eine rollenbasierte Zugriffssteuerung (RBAC). Sie können den Befehl EXECUTE DBT PROJECT von einem Snowflake-Warehouse aus verwenden, um dbt-Befehle wie test
und run
auszuführen. Sie haben auch die Möglichkeit, die Ausführung dieser Befehle mithilfe von Aufgaben zu planen.
Ein dbt-Projektobjekt basiert in der Regel auf einem dbt-Projektverzeichnis, das eine dbt-project.yml
-Datei enthält. Dies ist das Muster, das Snowflake verwendet, wenn Sie ein dbt-Projektobjekt aus einem Arbeitsbereich heraus bereitstellen (erstellen).
Sie können ein dbt-Projekt auch aus einem übergeordneten Verzeichnis erstellen, das mehrere dbt-Projekte in Unterverzeichnissen enthält. Wenn Sie ein dbt-Projektobjekt auf diese Weise erstellen, müssen Sie den ParameterPROJECT_ROOT jedem EXECUTE DBT PROJECT-Befehl hinzufügen, den Sie mit dem Projekt verwenden. Dieser Parameter gibt den Pfad zu dem Unterverzeichnis an, das die dbt_project.yml
-Datei des Projekts enthält.
CI/CD-Workflows für dbt-Projektobjekte¶
dbt-Projektobjekte unterstützen Snowflake-CLI-Befehle, mit denen Sie dbt-Projekte über die Befehlszeile erstellen und verwalten können. Dies ist hilfreich bei der Integration von dbt-Projekten in Ihre Data-Engineering-Workflows und CI/CD-Pipelines. Weitere Informationen dazu finden Sie unter Snowflake CLI, Integration von CI/CD mit Snowflake CLI und snow dbt-Befehle.
Versionierung für dbt-Projektobjekte und -Dateien¶
Snowflake verwaltet Versionen von dbt-Projektobjekten und den entsprechenden Projektdateien. Sie können diese Versionierung nutzen, um Änderungen während des gesamten Lebenszyklus Ihrer Datenentwicklung und -bereitstellung zu verfolgen und zu verwalten. Snowflake identifiziert dbt-Projektobjekt-Versionen im dbt-Projekt-Stagingbereich, wie im folgenden Beispiel gezeigt:
snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id
version_id
kann einer der folgenden Bezeichner sein:
VERSION$<num>
: Gibt einen Versionsbezeichner im FormatVERSION$<num>
an, wobei<num>
is a positive integer, for example,VERSION1 USD
.Die Versionsnummer beginnt bei
1
, wenn Sie ein dbt-Projektobjekt erstellen, und wird mit jeder neuen Version des dbt-Projektobjekts um eins erhöht.Der Versionsbezeichner wird von Snowflake erhöht, wenn Sie die folgenden Aufgaben ausführen:
Redeploy dbt project von einem Arbeitsbereich aus (führt den Befehl ALTER aus).
Aktualisieren des Projekts mit dem Befehl ALTER DBT PROJECT.
Ausführen des Snowflake-CLI-Befehls
snow dbt deploy
ohne die Option--force
.Snowflake setzt den Versionsbezeichner auf
1
zurück und entfernt alle Versionsaliasse, wenn Sie die folgenden Befehle ausführen:
Befehl CREATE DBT PROJECT mit der Option
OR REPLACE
in SQL.Befehl
snow dbt deploy
mit der Option--force
in der Snowflake-CLI.
LAST
: Gibt die neueste Version des dbt-Projektobjekts an.
FIRST
: Gibt die älteste Version des dbt-Projektobjekts an.
version_name_alias
: Gibt einen benutzerdefinierten Versionsnamensalias an, den Sie für eine bestimmte Version des dbt-Projektobjekts unter Verwendung des Befehls ALTER DBT PROJECT mit der Option ADD VERSION erstellt haben. Ein Versionsnamensalias ist immer einem bestimmten Versionsbezeichner zugeordnet, z. B.VERSION$3
.
Die im dbt-Projekt-Stagingbereich gespeicherten Projektdateien sind nach Versionen geordnet, wobei jede Version ein eigenes Unterverzeichnis hat. Zum Beispiel kann ein dbt-Projektobjekt namens my_dbt_project_object
mit dem Versionsbezeichner VERSION$3
und eine dbt-Projektdatei namens dbt_project.yml
referenziert werden, wie im folgenden Beispiel gezeigt:
snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml
Anforderungen, Hinweise und Einschränkungen¶
Bevor Sie dbt Projects on Snowflake verwenden, lesen Sie die Anforderungen, Hinweise und Einschränkungen in diesem Abschnitt.
dbt-Projekte¶
Die folgenden Anforderungen, Hinweise und Einschränkungen gelten für dbt-Projektkonfigurationen, die von dbt Projects on Snowflake unterstützt werden:
Es werden nur dbt Core-Projekte unterstützt. dbt Cloud-Projekte werden nicht unterstützt. dbt Projects on Snowflake führt dbt-core Version 1.9.4 und dbt-snowflake Version 1.9.2 aus. Wenn Sie ein vorhandenes dbt-Projekt zu Snowflake migrieren, müssen Ihre dbt-Versionen nicht mit den Snowflake-Versionen übereinstimmen.
Jeder dbt-Projektordner in Ihrem Snowflake-Arbeitsbereich muss eine
profiles.yml
-Datei enthalten, die ein Ziel-warehouse
,database
,schema
undrole
in Snowflake für das Projekt angibt. Dertype
muss aufsnowflake
gesetzt sein. dbt erfordert einaccount
und einenuser
, aber diese können mit einer leeren oder beliebigen Zeichenfolge belassen werden, da das dbt-Projekt in Snowflake unter dem aktuellen Konto- und Benutzerkontext ausgeführt wird.Ein dbt-Projekt in einem Arbeitsbereich kann nicht mehr als 20.000 Dateien in seiner Ordnerstruktur umfassen. Dieses Limit beinhaltet alle Dateien im dbt-Projektverzeichnis und in Unterverzeichnissen, einschließlich der
target/dbt_packages/logs
-Verzeichnisse, in denen Protokolldateien gespeichert werden, wenn ein dbt-Projekt innerhalb des Arbeitsbereichs ausgeführt wird.
Gespeicherte Prozeduren¶
Wenn Sie zum Aufrufen von EXECUTE DBT PROJECT eine gespeicherte Prozedur nutzen, verwenden Sie eine gespeicherte Prozedur mit Aufruferrechten. Weitere Informationen dazu finden Sie unter CREATE PROCEDURE und Erstellen einer gespeicherten Prozedur.
Arbeitsbereiche für dbt Projects on Snowflake¶
Die folgenden Anforderungen, Hinweise und Beschränkungen gelten für Arbeitsbereiche für dbt Projects on Snowflake:
Anforderungen für persönliche Datenbanken¶
Arbeitsbereiche werden in einer persönlichen Datenbank erstellt und können nicht für andere Benutzer freigegeben werden. Persönliche Datenbanken müssen auf Kontoebene aktiviert werden, was ACCOUNTADMIN-Berechtigungen erfordert. Weitere Informationen dazu finden Sie unter Arbeitsbereiche verwalten.
Sekundärrollen sind pro Projekt und Sitzung erforderlich.¶
Für die Ausführung von dbt-Befehlen innerhalb eines Arbeitsbereichs für dbt Projects on Snowflake müssen Sekundärrollen aktiviert sein. Sind für ein Projekt und eine Sitzung keine Sekundärrollen aktiviert, werden Sie bei der ersten Ausführung eines Befehls aufgefordert, Sekundärrollen aus der Liste Profile zu aktivieren. Diese Auswahl muss für jedes Projekt getroffen werden. Die Auswahl bleibt nicht über die aktuelle Browsersitzung hinaus bestehen.
Wenn Sie über ein Enterprise Edition-Konto verfügen, sind Sitzungsrichtlinien möglicherweise so konfiguriert, dass Sekundärrollen für das Konto oder für bestimmte Benutzer nicht zulässig sind. Diese Benutzer sind dann nicht in der Lage, dbt-Befehle aus einem Arbeitsbereich für dbt Projects on Snowflake heraus auszuführen. Weitere Informationen zu Sitzungsrichtlinien finden Sie unter Sekundärrollen in einer Sitzungsrichtlinie festlegen.
Git-Repositorys¶
Die folgenden Anforderungen, Hinweise und Beschränkungen gelten, wenn Sie einen Arbeitsbereich für dbt Projects on Snowflake mit einem Git-Repository verbinden:
Um ein Git-Repository-Objekt in Snowflake festzulegen, ist die Einrichtung einer API-Integration in Snowflake erforderlich. Weitere Informationen dazu finden Sie unter Einrichten von Snowflake für Verwendung von Git.
Git-Repositorys, auf die nur über PrivateLink zugegriffen werden kann, werden nicht unterstützt.
Git-Repositorys größer als 2GB werden nicht unterstützt.
Sie können keine Verbindung zu einem leeren Git-Repository herstellen. Sie müssen mindestens ein Commit haben.
dbt-Abhängigkeiten¶
Die folgenden Anforderungen, Hinweise und Beschränkungen gelten für dbt-Abhängigkeiten für dbt-Projekte in dbt Projects on Snowflake:
Sie müssen den dbt-Befehl
deps
aus einem Arbeitsbereich für dbt Projects on Snowflake heraus oder unter Verwendung des Befehlssnow dbt execute
von der Snowflake-CLI ausführen, um den Projektordnerdbt_packages
zu erstellen und mit Daten zu füllen. Sie können den Befehldeps
nicht unter Verwendung des SQL-Befehls EXECUTE DBT PROJECT ausführen. Sie haben auch die Möglichkeit,deps
für Ihr lokales dbt-Projekt auszuführen, bevor es in Snowflake als dbt-Projektobjekt bereitgestellt wird.Die Angabe von Git-Paketen in der
packages.yml
-Datei wird nicht unterstützt.Damit Snowflake auf die Repositorys für die Abhängigkeiten zugreifen kann, sind eine Netzwerkregel und eine Integration für den externen Zugriff erforderlich. Weitere Informationen dazu finden Sie unter Erstellen einer Integration für den externen Zugriff für dbt-Abhängigkeiten in Snowflake. Weitere Informationen zu Beschränkungen beim Zugriff auf externe Netzwerke finden Sie unter Einschränkungen für Zugriff auf externe Netzwerke.
Telemetrie, Protokollierung und Ablaufverfolgung¶
Die folgenden Anforderungen, Hinweise und Beschränkungen gelten für Telemetrie, Protokollierung und Ablaufverfolgung bezüglich dbt in Snowflake:
Arbeitsbereiche für dbt Projects on Snowflake streamen „stdout“ nicht dynamisch, und „stdout“ wird nur nach Abschluss des Befehls angezeigt.
Zum Anzeigen von Protokollen und Ablaufverfolgung müssen Sie die LOG_LEVEL und TRACE_LEVEL für das dbt-Projektobjekt festlegen. Weitere Informationen dazu finden Sie unter Zugriffssteuerung für dbt-Projekte in Snowflake und dbt-Projekte in Snowflake überwachen.
Snowflake erfasst Telemetriedaten standardmäßig in der Tabelle SNOWFLAKE.TELEMETRY.EVENTS. Wenn Sie eine kundenspezifische Ereignistabelle haben, die als Ereignistabelle für Ihr Konto festgelegt ist, werden die Telemetriedaten dort erfasst. Wenn Sie ein Enterprise Edition-Konto verwenden, können Sie eine Ereignistabelle erstellen, um Telemetriedaten zu sammeln und sie mit der Datenbank zu verknüpfen, in der das dbt-Projektobjekt bereitgestellt wird. Weitere Informationen dazu finden Sie unter Überblick über die Ereignisse.
Unterstützte dbt-Befehle¶
In der folgenden Tabelle sind die dbt-Befehle aufgeführt, die in dbt Projects on Snowflake unterstützt werden. Jeder dbt-Befehl, der hier nicht enthalten ist, wird nicht unterstützt.