Ausführen und Planen von Notebooks in Workspaces

Planen von Notebooks in Workspaces

Bemerkung

Wenn Sie vorhaben, Notebooks in einem freigegebenen Arbeitsbereich zu planen, erfahren Sie unter Planen in freigegebenen Arbeitsbereichen, wie sich manuelle (nicht interaktive) Ausführungen und aufgabenbasierte Zeitpläne verhalten und welche Berechtigungen dafür gelten.

Beim Einsatz von Notebooks in der Produktion bietet Snowflake native Funktionen zur Verwaltung der Bereitstellung, Orchestrierung und Überwachung. Sie entwickeln und iterieren mit Notebooks interaktiv in Workspaces innerhalb von Snowsight. Wenn Sie ein Notebook planen, wird sein Inhalt in einem Produktionsobjekt bereitgestellt, das als Notebook-Projektobjekt (NPO) bezeichnet wird, das den Inhalt des Arbeitsbereichs kapselt (z. B. .ipynb-Dateien, Python-Skripte und SQL-Dateien). NPOs unterstützen versionierte Bereitstellungen und sind Objekte auf Schemaebene (z. B. db_name.schema_name.npo_name).

Nach der Bereitstellung können Sie die Ausführung des Notebooks mit Snowflake-Aufgaben (die den Notebook-Code von oben nach unten unter Verwendung einer konsistenten Laufzeit- und Abhängigkeitsliste ausführen) oder mit einem beliebigen Orchestrierungstool eines Drittanbieters orchestrieren. Snowflake erfasst Ausführungtelemetrie, die Sie in |sf-web-interface|überwachen können oder programmgesteuert über eine Ereignistabelle abfragen können. Weitere Informationen dazu finden Sie unter Beobachtbarkeit und Protokollierung für Notebooks in Workspaces.

Notebook-Projektobjekte (NPOs)

Ein NPO ist ein Objekt auf Schemaebene, das als produktionsbereite „Einheit“ in Ihrer Pipeline dient. Ein Notebook-Projekt ist mit einem Arbeitsbereich oder einem Stagingbereich verknüpft, und alle Dateien aus dem Arbeitsbereich werden kopiert. NPOs werden auf nicht interaktive Weise ausgeführt und können in eine Aufgabe zur Zeitplanung eingebettet werden.

  • Platzierung: NPOs existieren innerhalb eines bestimmten Schemas innerhalb einer Datenbank (database_name.schema_name.npo_name).

  • Einkapselung: Wenn Sie ein Notebook planen, erfasst das NPOdas gesamte Workspace-Verzeichnis, um sicherzustellen, dass alle Abhängigkeiten während der Ausführung verfügbar sind.

  • Ausführung: Sie führen ein NPO durch Angabe einer .ipynb-Hauptdatei (z. B. unter Verwendung des MAIN_FILE-Parameters) aus. Das Haupt-Notebook kann über :ref:`%run <label-nb_in_ws_edit_run_jupyter_magics>`zusätzliche Notebooks aufrufen.

  • Zeitplanung: Sie können mehrere Aufgabenobjekte erstellen, die dasselbe NPO ausführen, was mehrere Zeitpläne für dasselbe Notebook-Projektobjekt ermöglicht.

Weitere Informationen zu NPOs

NPOs sind Standarddatenbankobjekte, sodass Sie Metadatenbefehle verwenden können, um geplante Aufgaben zu überprüfen oder zu bereinigen.

Bereich

Befehl

Aktueller Kontext

SHOW NOTEBOOK PROJECTS;

Datenbankebene

SHOW NOTEBOOK PROJECTS IN DATABASE <database_name>;

Schemaebene

SHOW NOTEBOOK PROJECTS IN SCHEMA <database_name>.<schema_name>;

Kontoebene

SHOW NOTEBOOK PROJECTS IN ACCOUNT;

Berechtigungen und Freigabe für NPOs

Um ein NPO auszuführen oder zu verwalten, muss eine Rolle über die folgenden Berechtigungen verfügen:

  • Speicherort: USAGE oder OWNERSHIP für die Datenbank und das Schema, in denen das NPO enthalten ist.

  • NPO Zugriff: USAGE oder OWNERSHIP für das spezifische NPO.

  • Computing: USAGE und MONITOR für das Warehouse und USAGE für den Computepool (für Container Runtime).

  • Zeitplan: Die globale EXECUTE TASK-Berechtigung auf Kontoebene ist erforderlich, wenn das NPO durch eine Aufgabe ausgelöst wird.

  • Integrationen für den externen Zugriff: USAGE für beliebige, vom Notebook verwendete EAIs.

  • Aufgaben: Wenn das NPO über eine Aufgabe geplant wird, muss die Aufgabeneigentümerrolle die USAGE-Berechtigung für alle erforderlichen Objekte (z. B. NPOs, Warehouses oder Datenbanken) haben. Die Aufgabeneigentümerrolle muss auch die Berechtigung zum Ausführen der USE DATABASE- und USE SCHEMA-Befehle haben, wenn das Notebook seinen Ausführungskontext programmgesteuert festlegt.

Bemerkung

NPOs verwenden Aufruferrechte, wobei der Aufrufende der Benutzende ist (und nicht die Rolle). Wenn Sie EXECUTE NOTEBOOK PROJECT direkt in Snowsight ausführen, verwendet die Ausführung die Identität des aufrufenden Benutzenden und nicht die aktive Rolle in der Snowsight-Sitzung. Das Notebook wird in einer eigenen, dedizierten Sitzung (getrennt von der Snowsight-Sitzung) ausgeführt, mit der Standardrolle des Benutzenden als Primärrolle und allen aktivierten Sekundärrollen. Das bedeutet, dass das Notebook mit allen Berechtigungen ausgeführt werden kann, die den Rollen des Benutzenden erteilt wurden.

Verwenden eines NPO zum Planen eines Notebooks

Derzeit gibt es zwei unterstützte Szenarios für die Bereitstellung und Planung von Notebooks.. In beiden Szenarios müssen die Notebooks im NPO verpackt sein. Szenario A: plant Notebooks aus einem privaten Arbeitsbereich. Szenario B integriert GitHub-Aktionen (oder ein anderes CI/CD-System), um die Erstellung von NPOs von einem internen oder temporären Stagingbereich zu automatisieren, ihren Lebenszyklus durch versionierte Updates zu verwalten und ihre Ausführung mit Snowflake-Aufgaben zu orchestrieren.

Szenario

Arbeitsbereichstyp

Zeitplanmethode

A: Individuelle Entwicklung

Privat

Unterstützt. Entwickelung in Ihrem privaten Arbeitsbereich. Erstellen von Notebook-Projektobjekten (NPO) und Planen von Aufgaben.

B: Produktion (CI/CD)

Git-integriert

Notebook-Dateien werden in einem internen oder temporären Stagingbereich aus GitHub unter Verwendung von GitHub-Aktionen (oder anderen CI/CD-Tools) bereitgestellt und ein NPO wird von diesem Stagingbereich erstellt/aktualisiert. Die Aufgabe wird für dasNPO ausgeführt.

Detaillierte Workflows für jedes Szenario finden Sie unter Planen von Workflows nach Szenario.

Geplante Notebook-Ausführungen anzeigen

Sie können geplante Aufgaben an drei Stellen anzeigen:

Vom Notebook aus

Um geplante Ausführungen anzuzeigen oder mit ihnen zu interagieren, müssen Sie eine Rolle mit Zugriff auf die Datenbank und das Schema verwenden, in dem der Zeitplan und das Projektobjekt erstellt wurden.

  1. Wählen Sie im Navigationsmenü die Option Projects » Workspaces aus.

  2. Öffnen Sie ein geplantes Notebook.

  3. Wählen Sie oben im Notebook-Editor Scheduled runs Symbol für geplante Ausführungen aus. In einem Popover werden die folgenden Informationen angezeigt:

  • Alle geplanten Ausführungen für dieses Notebook.

  • Die nächste geplante Ausführungszeit.

  • Status der letzten Ausführungen. Bewegen Sie den Mauszeiger über einen Statusindikator, um Details wie die Abfrage-ID, letzte Ausführungszeit, Dauer und Status anzuzeigen.

Über das Aktionsmenü

  • Offener Ausführungsverlauf: Öffnet das Projektobjekt des Notebooks und zeigt alle vergangenen Ausführungen an, einschließlich Status, Dauer, Ergebnisse, Quelldatei, Protokolle und Metriken. Wenn Sie das Ergebnis einer Ausführung auswählen, wird das ausgeführte Notebook mit seiner Ausgabe geöffnet. Weitere Informationen dazu finden Sie unter Beobachtbarkeit und Protokollierung für Notebooks in Workspaces.

Vom Database Explorer

So zeigen Sie den Ausführungsverlauf für alle geplanten Notebooks an (einschließlich solche, die über CI/CD bereitgestellt werden):

  1. Wählen Sie im Navigationsmenü die Option Catalog » Database Explorer aus.

  2. Wählen Sie die Datenbank und das Schema aus, die das Notebook-Projektobjekt (NPO) enthalten .

  3. Wählen Sie den NPO aus.

  4. Wählen Sie Run history aus.

  5. Wählen Sie eine Ausführung aus, um die Notebook-Ausgabe dieser Ausführung zusammen mit Protokollen und Metriken (falls verfügbar) anzuzeigen. Weitere Informationen dazu finden Sie unter Beobachtbarkeit und Protokollierung für Notebooks in Workspaces.

Bemerkung

Um den Ausführungsverlauf von Notebook-Ausführungen anzuzeigen, die durch Airflow ausgelöst wurden, melden Sie sich bei Snowsight mit demselben Benutzernamen, der Airflow ausführt, an.

Geplante Aufgaben verwalten

Im Popover Scheduled runs können Sie Ihre geplanten Aufgaben verwalten, indem Sie das Ellipsenmenü (Weitere Aktionen) sf-options-button neben einer geplanten Aufgabe auswählen:

  • Jetzt ausführen: Löst eine sofortige Ausführung der geplanten Aufgabe aus.

  • Zeitplan anhalten: Verhindert vorübergehend die automatische Ausführung des Zeitplans. Die Aufgabe bleibt konfiguriert, wird aber erst ausgeführt, wenn sie fortgesetzt wird.

  • Löschen: Entfernt die geplante Aufgabe dauerhaft. Sie können einen neuen Zeitplan mit anderen Einstellungen (z. B. einer anderen Rolle oder einem anderen Datenbankspeicherort) erstellen, nachdem Sie den bestehenden Zeitplan gelöscht haben.

Aktualisierungen für geplante Notebook-Aufgaben bereitstellen

Nach der Bearbeitung eines Notebooks müssen Sie Ihre Änderungen bereitstellen, bevor geplante Ausführungen die aktualisierte Version verwenden. Die Bereitstellung stellt die Reproduzierbarkeit sicher und verhindert, dass geplante Aufgaben Code ausführen, der sich von dem unterscheidet, was zuletzt bereitgestellt wurde. Wenn dies die erste Aufgabe des Notebooks ist und ein Notebook Änderungen aufweist, die eine Bereitstellung erfordern, wird unter dem Zeitplansymbol (Kalender) ein Uhr-Indikator angezeigt. Wenn bereits ein Zeitplan vorhanden ist, ist das Symbol ein Kalender mit einer Uhr.

Nach dem Ändern von Code oder Zellen zeigt das Symbol an, dass es Änderungen gibt, die nicht bereitgestellt wurden.

  • Wählen Sie Deploy Changes aus.

    Snowflake aktualisiert dann das zugehörige Notebook-Projektobjekt, und alle geplanten Aufgaben für dieses Notebook verwenden bei der nächsten Ausführung die neu bereitgestellte Version.

Ein Notebook-Projektobjekt (NPO) im Object Explorer suchen

Jedes geplante Notebook erstellt automatisch ein NPO, das den bereitgestellten Code, den Ausführungsverlauf und die Artefakte speichert. Sie finden diese Objekte im Object Explorer in Snowsight.

Um ein NPO in Snowsight zu finden, führen Sie die folgenden Schritte aus:

  1. Wählen Sie im Navigationsmenü die Option Catalog » Database Explorer aus.

  2. Navigieren Sie zu Database » Schema » Notebook Project Objects, um alle NPOs in diesem Schema anzuzeigen.

Alternativ können Sie auch Folgendes tun:

  1. Öffnen Sie das entsprechende Notebook.

  2. Wählen Sie oben im Notebook-Editor Scheduled runs Symbol für geplante Ausführungen aus.

  3. Wählen Sie Open run history aus, um das zugehörige NPO zu öffnen.

Den Ausführungsverlauf des Notebooks anzeigen

In diesem Abschnitt wird beschrieben, wie Sie Ausführungsdetails anzeigen und Notebook-Ausführungen beheben können, nachdem ein Zeitplan erstellt wurde. Wenn ein Schritt während der Ausführung fehlschlägt, bricht Snowflake die Ausführung ab, um teilweise oder inkonsistente nachgelagerte Ergebnisse zu vermeiden.

Um den Ausführungsverlauf anzuzeigen, gehen Sie wie folgt vor:

  1. Wählen Sie im Navigationsmenü die Option Projects » Workspaces aus.

  2. Öffnen Sie das Notebook, dessen Ausführungsverlauf Sie überprüfen möchten.

  3. Wählen Sie oben im Notebook-Editor Scheduled runs Symbol für geplante Ausführungen aus.

  4. Wählen Sie im Dropdown-Menü die Option View run history aus.

Run History zeigt die folgenden Informationen für das Projektobjekt des Notebooks an:

  • Ergebnisse: Sehen Sie sich das Notebook und die Ausgabe früherer Ausführungen an.

  • Aufgaben: Sehen Sie, welche Aufgaben das NPO ausgeführt haben.

  • Quelldatei: Zeigen Sie die Notebook-Datei an, die ausgeführt wurde.

  • Protokolle und Metriken: Zeigen Sie Ausführungsprotokolle und Leistungsmetriken an (stellen Sie sicher, dass Sie die Protokollierung und Ereignistabelle aktiviert haben). Weitere Informationen dazu finden Sie unter Beobachtbarkeit und Protokollierung für Notebooks in Workspaces.

  • Ausführungsdetails: Start- und Endzeiten, Ausführungsstatus und Fehlerdetails.

Zeitplanung in freigegebenen Arbeitsbereichen

In einem freigegebenen Arbeitsbereich verwenden Ausführungen dieselben Bausteine wie überall in Arbeitsbereichen: ein -Notebook-Projektobjekt (NPO) für gepackten Code und Snowflake-Aufgaben zur geplanten Ausführung.

Das NPO und jede Aufgabe sind separate Objekte. Erteilen Sie explizite Berechtigungen, damit Teilnehmer im Arbeitsbereich arbeiten, in das NPO bereitstellen, Ausführungen ausführen oder überwachen und Aufgaben verwalten können.

Nicht-interaktive Ausführung eines NPO (manuell)

Nicht-interaktive Ausführung eines NPO (manuell) führt das bereitgestellte Projekt „headless“ (außerhalb des Notebook-Editors) aus, wenn Sie SQL wie EXECUTE NOTEBOOK PROJECT absetzen. Verwenden Sie diesen Pfad für Ad-hoc-Validierungen und -Tests, nachdem Sie auf dem NPO bereitgestellt haben.

  • Sichtbarkeit: Der Zugriff ist an die Sitzung des einzelnen Benutzers gebunden.

  • Anforderung: Sie müssen über USAGE oder OWNERSHIP für das NPO verfügen, um eine nicht-interaktive Ausführung (manuell) auszulösen.

  • Zum Anzeigen des Verlaufs: Verwenden Sie in Snowsight Datenbank » **Schema**|raa| das NPO.

Geplante Ausführung (Aufgaben)

Für die Ausführung mit einer Kadenz, führen Sie das NPO über eine Snowflake-Aufgabe aus. Erstellen oder verwalten Sie den Zeitplan über Arbeitsbereiche**|raa| **Notebooks (Kalendersymbol) oder mit SQL in einem Arbeitsblatt.

  • Sichtbarkeit: Der Zugriff folgt den Berechtigungen für Aufgabenobjekte (Eigentümer im Vergleich zu Überwachen oder Ausführen).

  • Anforderung: Die ausführende Rolle benötigt USAGE für das NPO und OWNERSHIP für die Aufgabe, um den Zeitplan zu starten.

  • Ausführungsverlauf:

    • Durch USAGE für das NPO und OWNERSHIP für die Aufgabe kann ein Benutzer den vollständigen Ausführungsverlauf, einschließlich der Ergebnisse, einsehen.

    • Durch USAGE für das NPO und MONITOR oder``OPERATE`` für die Aufgabe kann ein Benutzer den Erfolgs- oder Fehlerstatus sehen, aber nicht die Ergebnisdatei.

  • Ergebnisdateien: Der Zugriff auf die Notebook-Ausgabedatei für eine Aufgabenausführung erfordert OWNERSHIP für die Aufgabe.

Allgemeine Arbeitsbereichsberechtigungen

  • Erstellen von Objekten: Erfordert VIEW-Berechtigung für den Arbeitsbereich (oder eine höhere Berechtigung).

  • Bereitstellen von Änderungen: Mit Schreibzugriff auf einen freigegebenen Arbeitsbereich können Sie Änderungen bereitstellen. Damit der Zeitplan die aktualisierte Logik ausführen kann, muss die Rolle OWNERSHIP für die Aufgabe und USAGE für das NPO haben.

Berechtigungsszenarien: nicht-interaktive manuelle Ausführungen und Aufgaben

Die folgende Tabelle fasst zusammen, wer den Ausführungsverlauf und die Ergebnisse für nicht-interaktive (manuell) NPO-Läufe im Vergleich zu task-Läufen einsehen kann.

Ausführungstyp

Benutzerrolle oder -berechtigung

Ausführungsverlauf anzeigen?

Ausführungsergebnisse anzeigen?

Anmerkungen

Nicht-interaktiv (manuell)

Initiierender Benutzer

Ja

Ja

Jeder mit OWNERSHIP oder USAGE für das NPO kann ausführen und den eigenen Verlauf sehen.

Nicht-interaktiv (manuell)

NPO-Eigentümer (anderer Benutzer)

Nein

Nein

Nicht-interaktive manuelle Ausführungen eines anderen Benutzers können nicht angezeigt werden.

Nicht-interaktiv (manuell)

NPO USAGE ohne Eigentümerschaft (anderer Benutzer)

Nein

Nein

Nicht-interaktive manuelle Ausführungen eines anderen Benutzers können nicht angezeigt werden.

Aufgabe

Aufgabeneigentümer

Ja

Ja

Vollständige Kontrolle über den Lebenszyklus; kann den Verlauf und die Ergebnisse von aufgabenbasierten Ausführungen sehen.

Aufgabe

Aufgabe MONITOR / OPERATE

Ja

Nein

Kann den Status und die Protokolle sehen, aber nicht auf die Ausgabedatei (Ergebnisdatei) zugreifen.

Ein Notebook mit Aufgaben planen

  1. Wählen Sie im Navigationsmenü die Option Projects » Workspaces aus.

  2. Führen Sie den folgenden Befehl in einer bzw- einem SQL-Datei/Arbeitsblatt aus:

-- Execute a notebook project using a task
CREATE OR REPLACE TASK <database_name>.<schema_name>.<name>
  WAREHOUSE = <string>
  SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
  -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
  -- Execute a notebook stored within a notebook project.
  EXECUTE NOTEBOOK PROJECT "<database_name>"."<schema_name>"."<project_name>"
    MAIN_FILE = 'notebook.ipynb'  -- Path to the notebook file
    COMPUTE_POOL = '<compute_pool_name>'
    RUNTIME = '<runtime_version>'  -- e.g. V2.2-CPU-PY3.11
    QUERY_WAREHOUSE = '<wh_name>'
    ARGUMENTS = '<string>'  -- Can pass a single string parsed in the notebook code
    REQUIREMENTS_FILE = '<path/to/requirements.txt>'  -- Pre-installs dependencies before the notebook runs
    EXTERNAL_ACCESS_INTEGRATIONS = ('integration_name');  -- e.g. ('http_eai', 's3_eai')

Nachdem Sie diese Aufgabe erstellt haben, führen Sie den folgenden Befehl aus, um den Zeitplan zu aktivieren:

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;

Wenn eine Aufgabe fehlschlägt, weil Ihre aktive Rolle nicht über die erforderlichen Berechtigungen verfügt, zeigt Snowsight die entsprechenden Fehlermeldungen an, sodass Sie sich um die fehlenden Berechtigungen kümmern können.

Syntax, Parameter und Beispiele finden Sie unter EXECUTE NOTEBOOK PROJECT. Informationen zur Übergabe von Parametern an geplante Notebooks finden Sie unter Ausführen von Notebooks mit Parametern.

Bemerkung

Weitere Informationen zur Credit-Nutzung, zum Timeout-Verhalten bei Leerlauf und zur Verwaltung des Notebook-Services finden Sie unter Einrichten von Computeressourcen und Timeout bei Leerlauf.