Schreiben von Snowpark-Code in Python-Arbeitsblättern¶
Schreiben Sie Snowpark-Code in Python-Arbeitsblätter, um Daten mithilfe von Snowpark Python in Snowsight zu verarbeiten. Indem Sie Code in Python-Arbeitsblättern schreiben, können Sie Entwicklung und Test in Snowflake durchführen, ohne abhängige Bibliotheken installieren zu müssen.
Um mit Python-Arbeitsblättern zu entwickeln, müssen Sie folgende Schritte ausführen:
Sie könnten beispielsweise Code in ein Python-Arbeitsblatt schreiben, der Daten aus Stagingbereichen oder Datenbankobjekten in Snowflake extrahiert, diese Daten umwandelt und die umgewandelten Daten in Snowflake speichert. Sie könnten dann diesen Code in eine gespeicherte Prozedur konvertieren und eine Datenpipeline erstellen, ohne Snowflake zu verlassen.
Unter diesem Thema:
Allgemeine Informationen zu Python-Arbeitsblättern¶
Mit Python-Arbeitsblättern können Sie Snowpark Python in Snowsight verwenden, um Datenänderungen und Datenumwandlungen auszuführen. Sie können in Anaconda verfügbare Pakete verwenden oder Ihre eigenen Python-Dateien aus Stagingbereichen importieren, um sie in Skripten zu verwenden.
Überprüfen Sie nach dem Ausführen eines Python-Arbeitsblatts die Ergebnisse und die Ausgabe, die von Ihrem Skript zurückgegeben werden. Die Ergebnisse werden je nach Code als Zeichenfolge, Variant-Wert oder Tabelle angezeigt. Weitere Informationen dazu finden Sie unter Ausführen von Python-Arbeitsblättern.
Bemerkung
Da Python-Arbeitsblätter in Snowflake und nicht in Ihrer lokalen Entwicklungsumgebung ausgeführt werden, können Sie weder session.add_import
verwenden, um eine Datei hinzuzufügen, von der Ihr Python-Code abhängt, noch session.add_packages
oder session.add_requirements
, um Pakete hinzuzufügen, die Sie in Ihrem Python-Code verwenden müssen. Stattdessen fügen Sie diese Dateien einem Stagingbereich hinzu und verwenden im Code eine Referenz auf die Dateien. Weitere Informationen dazu finden Sie unter Python-Datei aus einem Stagingbereich zu einem Arbeitsblatt hinzufügen.
Python-Arbeitsblätter haben die folgenden Einschränkungen:
Protokollebenen unter Warnungen (WARN) werden standardmäßig nicht in der Ausgabe (Output) eines Python-Arbeitsblatts angezeigt. Verwenden Sie stattdessen eine Protokollierungsbibliothek wie das
logging
-Modul, um die Ebene der protokollierten Meldungen festzulegen. Alle Meldungen, die Sie protokollieren, werden in der Ausgabe angezeigt.Keine Unterstützung von Haltepunkten oder das Ausführen nur von Teilen des Python-Codes im Arbeitsblatt.
Keine Unterstützung von Bildern oder Webseiten. Von Python-Code generierte Bilder oder Webseiten können nicht in Python-Arbeitsblättern angezeigt werden.
Snowpark Python verwendet Python 3.8.
Wenn Sie Unterstützung für eine dieser Optionen benötigen, sollten Sie stattdessen Ihre lokale Entwicklungsumgebung verwenden. Weitere Informationen dazu finden Sie unter Einrichten Ihrer Entwicklungsumgebung für Snowpark Python.
Voraussetzungen für Python-Arbeitsblätter¶
Um Python-Arbeitsblätter zu verwenden, müssen Sie Folgendes tun:
Lesen und akzeptieren Sie die Nutzungsbedingungen für Anaconda in Snowsight. Weitere Informationen dazu finden Sie unter Erste Schritte.
(Optional) Fügen Sie Python-Dateien und -Pakete, die nicht in Anaconda enthalten sind und die Sie in einem Python-Arbeitsblatt verwenden möchten, einem benannten Stagingbereich hinzu. Weitere Informationen dazu finden Sie unter Python-Datei aus einem Stagingbereich zu einem Arbeitsblatt hinzufügen.
Wählen Sie ein Warehouse aus, das für Python-Arbeitsblätter verwendet werden soll. Snowflake empfiehlt die Verwendung eines Warehouses der Größe X-Small für die Entwicklung. Wenn Sie eine sehr große Snowpark-Workload ausführen, verwenden Sie ein Snowpark-optimiertes Warehouse. Weitere Informationen zu Warehouse-Größen finden Sie unter Warehouse-Größe.
Python-Datei aus einem Stagingbereich zu einem Arbeitsblatt hinzufügen¶
Snowflake enthält die Anaconda-Pakete aus dem Snowflake-Conda-Kanal in Python-Arbeitsblättern. Wenn Sie in Ihrem Python-Arbeitsblatt andere Python-Dateien oder -Pakete als die in Anaconda enthaltenen verwenden möchten, müssen Sie die Dateien in einen benannten Stagingbereich in Snowflake hochladen und die Dateien dann zur Liste der Pakete für Ihr Python-Arbeitsblatt hinzufügen.
Um ein nicht standardmäßig enthaltenes Python-Paket in Ihrem Arbeitsblatt zu verwenden, gehen Sie wie folgt vor:
Melden Sie sich bei Snowsight an.
Öffnen Sie Worksheets.
Wählen Sie + » Python Worksheet aus.
Wählen Sie eine Datenbank und ein Schema aus.
Wählen Sie Packages » Stage Packages aus.
Geben Sie den Pfad zu dem im Stagingbereich befindlichen Paket ein.
Wenn die ausgewählte Datenbank und das ausgewählte Schema für das Arbeitsblatt den Stagingbereich enthalten, in dem sich das Paket befindet, können Sie auf den Stagingbereich mit einem nicht qualifizierten Namen verweisen. Beispiel:
@YourStage/path/to/package.py
.Um auf einen Stagingbereich in einer anderen Datenbank und einem anderen Schema zu verweisen, verwenden Sie den vollqualifizierten Namen des Stagingbereichs. Beispiel:
@Database.Schema.Stage/path/to/package.py
.
Wählen Sie Import aus, um Ihr Paket zur Liste der installierten Pakete hinzuzufügen. Sie können dann
import
-Anweisungen verwenden, um das Paket in Ihrem Python-Arbeitsblatt zu verwenden.
Bemerkung
Pakete, die Sie einem Arbeitsblatt hinzufügen, sind nur für dieses Arbeitsblatt verfügbar. Wenn Sie dasselbe Paket in einem anderen Python-Arbeitsblatt verwenden möchten, führen Sie diese Schritte aus, um das Paket zu diesem Arbeitsblatt hinzuzufügen.
Weitere Informationen dazu finden Sie unter Abhängigkeiten für Code zur Verfügung stellen.
Entwicklung mit Python-Arbeitsblättern starten¶
Gehen Sie wie folgt vor, um ein Arbeitsblatt zu öffnen und Ihre Entwicklungsumgebung zu konfigurieren:
Melden Sie sich bei Snowsight an.
Öffnen Sie Worksheets.
Wählen Sie + » Python Worksheet aus.
Wählen Sie eine Datenbank und ein Schema aus.
Wählen Sie das Warehouse aus, das zum Ausführen des Arbeitsblatts verwendet werden soll. Wenn Sie für Ihren Benutzer ein Standard-Warehouse haben, ist dieses bereits ausgewählt.
Python-Arbeitsblätter erfordern ein aktives Warehouse, um Python-Pakete laden und Python-Code ausführen zu können.
(Optional) Wählen Sie Packages aus, um Python-Bibliotheken hinzuzufügen.
Pakete, die in Anaconda enthalten sind, wie numpy, Pandas, Requests und urllib3, sind bereits installiert.
Suchen Sie nach anderen Paketen, die Sie installieren und in Ihrem Arbeitsblatt verwenden möchten, z. B. scikit-learn. Wählen Sie das Paket in den Suchergebnissen aus, und ändern Sie optional die standardmäßig ausgewählte Paketversion. Von Ihnen installierte Pakete werden oben in der Liste der Pakete angezeigt.
Fügen Sie Ihre eigenen Pakete und Python-Dateien hinzu, indem Sie Stage Packages auswählen, den Dateipfad des Stagingbereichs und des Pakets angeben und dann Import auswählen.
Wenn Sie Ihrem Arbeitsblatt Python-Bibliotheken hinzufügen, aktualisieren Sie Ihren Code so, dass dieser
import
-Anweisungen verwendet, um die Bibliotheken in Ihr Arbeitsblatt zu importieren.Führen Sie den Python-Beispielcode aus, um Ihre Konfiguration zu validieren.
Fehlermeldungen oder der Rückgabewert Ihres Codes werden im Bereich Results angezeigt. Um Protokollmeldungen anzuzeigen, wählen Sie Output aus. Weitere Informationen dazu finden Sie unter Ausführen von Python-Arbeitsblättern.
Schreiben von Snowpark-Code in Python-Arbeitsblättern¶
Nachdem Sie die Schritte zum Starten der Entwicklung mit Python-Arbeitsblättern ausgeführt haben, können Sie den Beispielcode durch Ihren eigenen ersetzen.
Schreiben Sie Ihren Snowpark Python-Code innerhalb der Handler-Funktion:
import snowflake.snowpark as snowpark
def main(session: snowpark.Session):
# your code goes here
Die Standard-Handler-Funktion ist main
, aber Sie können diese für das Arbeitsblatt unter Settings ändern.
Verwenden Sie das im Beispielcode bereitgestellte session
-Objekt, um mit den Snowpark-API-Bibliotheken auf Daten in Snowflake zuzugreifen. Sie können zum Beispiel einen DataFrame für eine Tabelle erstellen oder eine SQL-Anweisung ausführen. Weitere Informationen dazu finden Sie unter Snowpark-Entwicklerhandbuch für Python.
Während Sie tippen, sehen Sie die automatische Autovervollständigung für Python-Methoden, definierte Variablen, Datenbankobjekte und mehr. Sie sehen keine automatische Vervollständigung für einige Pakete oder Dateien von Drittanbietern, die aus einem Stagingbereich importiert wurden. Python-Arbeitsblätter bieten auch Syntaxhervorhebung und Hinweise zu Methodenparametern. Sie können für das Arbeitsblatt unter Settings auch Linting und Zeilenumbruch aktivieren.
Ergebnisse in einem anderen Datentyp zurückgeben¶
Berücksichtigen Sie beim Schreiben Ihres Python-Codes, welcher Datentyp von der return
-Anweisung des Codes zurückgegeben wird, und passen Sie an, wie das Arbeitsblatt die Ergebnisse zurückgibt. Standardmäßig hat ein Python-Arbeitsblatt den Rückgabetyp Table(), da der Platzhaltercode einen DataFrame zurückgibt.
Abhängig davon, was Ihr Python-Code zurückgibt, möchten Sie möglicherweise die Arbeitsblatteinstellungen ändern, um die Ausgabe anders anzuzeigen:
Wenn Ihre Handler-Funktion einen
DataFrame
zurückgibt, verwenden Sie den Standard-Rückgabetyp Table().Wenn Ihre Handler-Funktion eine Liste von
Row
-Objekten zurückgibt, z. B. mit der Methodecollect
, ändern Sie den Rückgabetyp in Variant.Wenn Ihre Handler-Funktion eine Zeichenfolge wie
return "Hello Python"
oder einen Wert zurückgibt, den Sie in eine Zeichenfolge umwandeln möchten, ändern Sie den Rückgabetyp in String.Wenn Ihre Handler-Funktion eine Ganzzahl zurückgibt, wie z. B. bei der Methode
count
, verwenden Sie den Rückgabetyp Variant oder String.
Weitere Informationen zum Rückgabetyp einiger DataFrame-Methoden finden Sie unter Ausführen einer Aktion zum Auswerten eines DataFrame.
Gehen Sie wie folgt vor, um die Arbeitsblatteinstellungen so zu aktualisieren, dass Ergebnisse eines anderen Typs zurückgegeben werden:
Melden Sie sich bei Snowsight an.
Öffnen Sie Worksheets.
Öffnen Sie das Python-Arbeitsblatt, dessen Ergebnisse Sie als Tabelle anzeigen möchten.
Wählen Sie das Warehouse aus, das zum Ausführen des Arbeitsblatts verwendet werden soll. Wenn Sie für Ihren Benutzer ein Standard-Warehouse haben, ist dieses bereits ausgewählt. Stellen Sie sicher, dass Ihr Warehouse aktiv ist.
Wählen Sie Settings aus, und wählen Sie für Return Type den von der Handler-Funktion zurückgegebenen Typ aus.
Führen Sie Ihr Python-Arbeitsblatt aus.
Überprüfen Sie die Ergebnisse im Bereich Results.
Ausführen von Python-Arbeitsblättern¶
Nachdem Sie Ihr Python-Arbeitsblatt geschrieben haben, wählen Sie Run aus, um das Python-Arbeitsblatt auszuführen. Beim Ausführen des Arbeitsblatts wird der gesamte in Ihrem Python-Arbeitsblatt enthaltene Code ausgeführt. Die teilweise oder inkrementelle Ausführung von Code wird nicht unterstützt.
Vom Code generierte Ausgabe prüfen¶
Sie können im Bereich Output des Python-Arbeitsblatts die Standardausgabemeldungen (stdout) oder die Standardfehlermeldungen (stderr) für Ihren Python-Code überprüfen.
Sie können im Bereich Output die Ausgabe der folgenden Funktionstypen sehen:
Funktionen, die in die Konsole schreiben, wie z. B.
print()
.Funktionen, die ein DataFrame ausgeben, wie die
show
-Methode der DataFrame-Klasse in Snowpark Python.
Bemerkung
Die Ausgabe erfolgt nicht wie in einem Stream während der Codeausführung, sondern wird erst angezeigt, nachdem alle Python-Prozesse abgeschlossen sind.
Die Protokollausgabe wird in einen temporären Stagingbereich geschrieben und nur erfasst, wenn Folgendes zutrifft:
Sie wählen eine Datenbank und ein Schema für das Arbeitsblatt aus.
Die ausgewählte Datenbank wurde nicht aus einer Freigabe erstellt.
Sie führen das Arbeitsblatt mit einer Rolle aus, die über USAGE-Berechtigungen für die ausgewählte Datenbank und das ausgewählte Schema verfügt.
Abfrageverlauf für ein Python-Arbeitsblatt prüfen¶
Wenn ein Python-Arbeitsblatt in Snowsight ausgeführt wird, führt eine anonyme gespeicherte Prozedur den Code aus und generiert Abfragen, die die Snowpark-Befehle im Code ausführen.
Sie können die Seite Query History in Snowsight verwenden, um die ausgeführten Abfragen zu überprüfen. Weitere Informationen dazu finden Sie unter Abfrageverlauf.
Nachdem Sie beispielsweise ein Arbeitsblatt ausgeführt haben, können Sie die ausgeführten Abfragen wie folgt überprüfen:
Überprüfen Sie die Ergebnisse des Arbeitsblatts unter Results.
Wählen Sie unter Query Details für das Arbeitsblatt
» Copy Query ID aus.
Wählen Sie Worksheets aus, um zur Liste der Arbeitsblätter zurückzukehren.
Wählen Sie Activity » Query History aus.
So zeigen Sie auf der Seite Query History nur die Abfragen aus Ihrem Python-Arbeitsblatt an:
Wählen Sie Filters aus, und aktivieren Sie die Option Query ID.
Geben Sie die Abfrage-ID Ihres Python-Arbeitsblatts ein.
Wählen Sie Apply Filters aus.
Überprüfen Sie die für das Arbeitsblatt ausgeführten Abfragen.