EXECUTE NOTEBOOK PROJECT¶
Führt ein Notebook aus, das in einem Notebook-Projektobjekt gespeichert ist (NPO). Dieser Befehl führt das Notebook in einem nicht interaktiven (headless) Modus aus und ist nützlich für CI/CD-Pipelines und andere orchestrierte Workflows, bei denen Sie Parameter übergeben oder Abhängigkeitsversionen für wiederholbare Ausführungen sperren möchten. Der Befehl kann ausgeführt werden von:
SQL-Dateien.
Anderen ausführbaren Snowflake-Dateien (Aufgaben).
External Orchestratoren, die SQL ausgeben (z. B. Airflow, Prefect, Dagster, CI/CD-Systeme).
Der Befehl führt die Notebook-Datei, die Sie als MAIN_FILE angeben, unter Verwendung der von Ihnen konfigurierten Laufzeit, des Computepools, des Warehouse und der Integrationen für den externen Zugriff aus.
Wichtig
Stellen Sie vor dem Auslösen einer nicht interaktiven Ausführung sicher, dass Ihr Notebook seinen Ausführungskontext (Datenbank und Schema) festlegt oder vollqualifizierte Objektnamen verwendet. Weitere Informationen dazu finden Sie unter Bearbeiten und Ausführen von Notebooks in Workspaces.
Siehe auch: CREATE NOTEBOOK PROJECT, CREATE TASK,:ref:CI /CD Workflow-Szenario <label-nb_in_ws_schedule_scenario_b>,:doc:/user-guide/ui-snowsight/notebooks-in-workspaces/notebooks-in-workspaces-observability-logging, Ausführen von Notebooks mit Parametern
Syntax¶
EXECUTE NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name>
MAIN_FILE = 'notebook.ipynb'
COMPUTE_POOL = '<compute_pool_name>'
QUERY_WAREHOUSE = '<warehouse_name>'
RUNTIME = '<runtime_version>'
[ ARGUMENTS = '<parameter_string>' ]
[ REQUIREMENTS_FILE = '<path/to/requirements.txt>' ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ];
Erforderliche Parameter¶
database_name.schema_name.project_nameVollqualifizierter Bezeichner des auszuführenden Notebook-Projekts.
Muss auf ein bestehendes Notebook-Projekt verweisen, das mit CREATE NOTEBOOK PROJECT erstellt wurde.
Muss vollqualifiziert sein, es sei denn, es befindet sich in der aktuellen DATABASE und dem aktuellen SCHEMA.
Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.
MAIN_FILE = 'notebook_file_name.ipynb'Gibt die Notebook-Hauptdatei, die ausgeführt werden soll, innerhalb des Arbeitsbereichs an (
path/to/notebook.ipynb).Muss eine
.ipynb-Notebook-Datei sein, die sich in dem Arbeitsbereich befindet, auf den das Projekt verweist.Der Pfad ist relativ zum Stammverzeichnis des Arbeitsbereichs.
COMPUTE_POOL = 'compute_pool_name'Gibt den Computepool an, der verwendet wird, wenn das Notebook in einer Container-Laufzeit ausgeführt wird.
Erforderlich, wenn die Notebook-Laufzeit Snowpark Container Services verwendet.
QUERY_WAREHOUSE = 'warehouse_name'Gibt das virtuelle Warehouse an, das für die Ausführung von SQL- und Snowpark-Abfragen vom Notebook aus verwendet wird.
Erforderlich, wenn das Notebook SQL- oder Snowpark-Vorgänge ausführt und ansonsten kein Warehouse konfiguriert ist.
Bei Verwendung von Container-Laufzeiten übernimmt das Warehouse die Abfrageverschiebung (Pushdown). Python wird auf dem Computepool ausgeführt.
RUNTIME = 'runtime_version'Gibt das Laufzeit-Image/die Laufzeitversion für die Ausführung des Notebooks an (z. B.
'1.0' or '2.2-CPU-PY3.11').Bestimmt die Python-Version und die Ausführungsumgebung, die für die Ausführung des Notebooks verwendet werden.
Entspricht einem Container-Laufzeit-Image (CPU oder GPU) oder einer Warehouse-Laufzeitvariante.
Optionale Parameter¶
Abhängig davon, wie Projekt und Laufzeitumgebung konfiguriert sind, müssen Sie möglicherweise die folgenden Parameter festlegen. Die folgenden Beschreibungen definieren ihren Zweck und die typische Nutzung.
ARGUMENTS = 'parameter_string'Optional werden zur Laufzeit ein oder mehrere Zeichenfolgenargumente an das Notebook übergeben, die als Befehlszeilenargumente in der
sys.argv-Liste angezeigt werden. Argumente sind nützlich, um die Logik von Notebooks dynamisch zu gestalten (z. B. um eine Umgebung wieenv prodauszuwählen).Um mehrere Argumente zu übergeben, geben Sie diese in einer einzigen, durch Leerzeichen getrennten Zeichenfolge an. Die Argumente werden in
sys.argvanalysiert, mit Leerzeichen als Trennzeichen. Greifen Sie in einer Python-Zelle auf die Argumente, indem Siesys.argv[0]als den Notebook-Namen undsys.argv[1]für das erste Argument usw. verwenden.Es werden nur Zeichenfolgen unterstützt. Andere Datentypen (wie Ganzzahlen oder Boolesche Werte) werden als NULL interpretiert.
Beispiele:
ARGUMENTS = 'env prod';
import sys print(sys.argv)
REQUIREMENTS_FILE = '<path/to/requirements.txt>'Gibt optional eine
requirements.txt-Datei in einem Arbeitsbereich oder in einem Stagingbereich an, um exakte Versionen von Bibliotheken (wie pandas oder scikit-learn) und anderen Python-Abhängigkeiten vor der Ausführung des Notebooks vorzuinstallieren. Das Pinning von Abhängigkeiten ist entscheidend für die Idempotenz und trägt dazu bei, dass Notebook-Ausführungen wiederholbarer sind und so Fehler reduziert werden, die durch Änderungen in Bibliotheksversionen verursacht werden. Die ausführende Rolle muss auf die Datei zugreifen können.EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )Gibt eine oder mehrere Integrationen für den externen Zugriff an, die das Notebook während der Ausführung verwenden kann.
Erforderlich, wenn das Notebook ausgehende Netzwerkaufrufe tätigt (z. B. an die externe APIs).
Jeder Integrationsname muss auf eine vorhandene Integration für den externen Zugriff verweisen.
Mehrere Integrationen für den externen Zugriff können in einer durch Kommas getrennten Liste in den Klammern angegeben werden.
Beispiel:
EXTERNAL_ACCESS_INTEGRATIONS = (http_eai, s3_eai);
Bemerkung
Die von Snowflake verwaltete PyPI-Netzwerkregel
SNOWFLAKE.EXTERNAL_ACCESS.PYPI_RULEist nur für Rolle ACCOUNTADMIN zugreifbar. Folglich kann die Verwendung dieser Regel in einer Integration für den externen Zugriff (EAI, External Access Integration) für Notebook-Objekte oder geplante Aufgaben dazu führen, dass diese fehlschlagen. Um dies zu vermeiden, erstellen Sie eine benutzerdefinierte Netzwerkregel für PyPI und referenzieren Sie diese in der Integration für den externen Zugriff. Weitere Informationen dazu finden Sie unter Von Snowflake verwaltete Netzwerkregeln für ausgehenden Datenverkehr.
Anforderungen an die Zugriffssteuerung¶
Die Rolle, die EXECUTE NOTEBOOK PROJECT ausführt, muss über ausreichende Berechtigungen für das Notebook-Projekt verfügen.
Außerdem muss die ausführende Rolle über USAGE- und MONITOR-Berechtigungen für das Abfrage-Warehouse und USAGE- oderOWNERSHIP-Berechtigungen für Folgendes verfügen:
Der Computepool.
Die Datenbank und das Schema, die das Notebook-Projekt enthalten.
Aufgaben und Integrationen für den externen Zugriff, auf die der Befehl verweist.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Der Befehl EXECUTE NOTEBOOK PROJECT kann nicht von einem Notebook aus verwendet werden.
Sie können
EXECUTE NOTEBOOK PROJECTvon Aufgaben aufrufen, sodass Notebooks als Teil von größeren Workflows ausgeführt werden können.Snowflake unterstützt nicht die Einbettung des Befehls
EXECUTE NOTEBOOK PROJECTin einer Aufgabe, die für die Ausführung unter Verwendung der EXECUTE AS USER-Klausel konfiguriert ist. Beim Erstellen einer solchen Aufgabe wird keine Fehlermeldung angezeigt. Wenn die Aufgabe ausgeführt wird, schlägt sie jedoch fehl.Wenn Sie ein Notebook mit dem Befehl
EXECUTE NOTEBOOK PROJECTausführen:Der Notebook-Code wird auf dem durch den Parameter COMPUTE_POOL angegebenen Computepool ausgeführt, unter Verwendung der durch den Parameter RUNTIME angegebenen Laufzeit.
SQL- und Snowpark-Abfragen werden mit dem Warehouse ausgeführt, das vom Parameter QUERY_WAREHOUSE angegeben wird.
Beispiele¶
Ein Notebook-Projekt ausführen:
EXECUTE NOTEBOOK PROJECT "sales_detection_db"."schema"."DEFAULT_PROJ_B32BCFD4"
MAIN_FILE = 'notebook_file.ipynb'
COMPUTE_POOL = 'test_X_CPU'
QUERY_WAREHOUSE = 'ENG_INFRA_WH'
RUNTIME = 'V2.2-CPU-PY3.10'
ARGUMENTS = 'env prod'
REQUIREMENTS_FILE = 'path/to/requirements.txt'
EXTERNAL_ACCESS_INTEGRATIONS = ('test_EAI');