Planen der Ausführung von dbt-Projekten in Snowflake

Sie können Snowflake--Aufgaben verwenden, um Ausführungen von dbt Projects on Snowflake mit dem Befehl EXECUTE DBT PROJECT zu planen. Sie können einen Arbeitsbereich für dbt Projects on Snowflake verwenden, um eine benutzerverwaltete Aufgabe schnell zu erstellen und zu planen. Sie können auch SQL-Befehle zum Erstellen von Aufgaben nutzen. Wenn ein Arbeitsbereich mit einem dbt-Projektobjekt verbunden ist, können Sie innerhalb des Arbeitsbereichs alle Aufgaben anzeigen, die den Befehl EXECUTE DBT PROJECT für dieses Projekt ausführen.

Sie müssen eine Aufgabe erstellen, die den Befehl EXECUTE DBT PROJECT in derselben Datenbank und demselben Schema wie das dbt-Projektobjekt ausführt.

Aufgabe aus einem Arbeitsbereich heraus erstellen

Wenn Sie einen Zeitplan in einem Arbeitsbereich für dbt Projects on Snowflake erstellen, generiert Snowflake den Zeitplan durch Erstellen einer benutzerverwalteten Aufgabe, die in derselben Datenbank und demselben Schema wie das dbt-Projektobjekt gespeichert wird. Die Aufgabe wird mit den Berechtigungen des Aufgabeneigentümer ausgeführt, aber die Aufgabenausführungen sind keinem Benutzer zugeordnet.

So erstellen Sie eine Aufgabe, die die Ausführung eines dbt-Projektobjekts von einem Arbeitsbereich aus plant:

  1. Wählen Sie im dbt-Projektmenü oben rechts im Arbeitsbereichseditor unter Scheduled runs`die Option :ui:`Create schedule aus.

  2. Gehen Sie im Dialogfeld Schedule a dbt run wie folgt vor:

    • Geben Sie unter Schedule name einen Namen für die Aufgabe ein.

    • Wählen Sie unter Frequency eine Häufigkeit aus, die von Hourly bis Monthly mit einem at-Qualifizierer reicht, oder wählen Sie Custom aus, und geben Sie einen Cron-Ausdruck ein. Weitere Informationen zum Planen von Aufgaben finden Sie unter SCHEDULE = ... in der Referenz zum Befehl CREATE TASK.

    • Unter dbt properties:

      • Wählen Sie für Operation den dbt-Befehl aus, den Sie nach einem Zeitplan ausführen möchten. Eine Liste der unterstützten Befehle finden Sie unter Unterstützte dbt-Befehle.

      • Wählen Sie unter Profile eines der in der Datei profiles.yml Ihres dbt-Projekts definierten Profile aus.

      • Geben Sie unter Additional flags weitere Befehlszeilenoptionen für den dbt-Befehl ein.

  3. Wählen Sie Create aus.

    Snowflake erstellt eine Aufgabe, die einen EXECUTE DBT PROJECT-Befehl mit den von Ihnen angegebenen Parametern ausführt.

Anzeigen einer Aufgabe aus einem Arbeitsbereich heraus

Im Arbeitsbereich für dbt Projects on Snowflake können Sie alle Aufgaben in der Datenbank und im Schema anzeigen, die EXECUTE DBT PROJECT für das dbt-Projektobjekt ausführen, das mit einem Arbeitsbereich verknüpft ist. Sie können eine Aufgabe auswählen, um deren Details im Objekt-Explorer anzuzeigen, einschließlich der Aufgabendefinition, des Ausführungsverlaufs der Aufgabe und des Task-Graphen.

So zeigen Sie Aufgaben, die mit einem dbt-Projektobjekt verknüpft sind, von einem Arbeitsbereich aus an:

  • Wählen Sie im dbt-Projektmenü die Option View schedules, und wählen Sie dann Ihren Zeitplan (Aufgabe) aus der Liste aus.

    Die Task Details für die Aufgabe werden im Objekt-Explorer geöffnet. Es werden die Aufgabendetails, die SQL-Anweisung, die die Aufgabendefinition enthält, und die für das Aufgabenobjekt gewährten Berechtigungen angezeigt.

    Wählen Sie die Registerkarte Run History, um den Aufgabenausführungsverlauf anzuzeigen, oder wählen Sie die Registerkarte Task Graph, um die Beziehung dieser Aufgabe zu anderen Aufgaben in einem Task-Graphen (falls zutreffend) anzuzeigen.

    Weitere Informationen dazu finden Sie unter Anzeigen von Aufgaben und Aufgabendiagrammen in Snowsight.

Eine Aufgabe mit SQL erstellen

Sie können den Befehl CREATE TASK verwenden, um Aufgaben zu erstellen, die den Befehl EXECUTE DBT PROJECT ausführen. Die Verwendung von SQL zum Erstellen von Aufgaben, die verschiedene dbt-Befehle mit unterschiedlichen dbt-CLI-Optionen ausführen, bieten eine effiziente Möglichkeit, dbt-Bereitstellungen in Snowflake zu orchestrieren.

Im folgenden SQL-Beispiel wird eine Aufgabe für ein Produktions-dbt-Ziel erstellt, das den dbt-Befehl run in einem Intervall von sechs Stunden ausführt.

CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
  WAREHOUSE = my_warehouse
  SCHEDULE = '6 hours'
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';
Copy

Dann erstellt das folgende SQL eine Aufgabe, die den dbt-Befehl test nach jeder Fertigstellung der vorherigen run_dbt_project-Aufgabe ausführt.

CREATE OR ALTER TASK change_this.public.test_dbt_project
        WAREHOUSE = my_warehouse
        AFTER run_dbt_project
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';
Copy