Code in Snowflake Notebooks entwickeln und ausführen¶
Dieses Thema beschreibt, wie Sie SQL, Python und Markdown-Code in Snowflake Notebooks schreiben und ausführen.
Grundlagen zu Notebook-Zellen¶
In diesem Abschnitt werden einige grundlegende Zelloperationen vorgestellt. Wenn Sie ein Notebook erstellen, werden drei Beispielzellen angezeigt. Sie können diese Zellen ändern oder neue Zellen hinzufügen.
Neue Zelle erstellen¶
Snowflake Notebooks unterstützt drei Typen von Zellen: SQL, Python und Markdown. Um eine neue Zelle zu erstellen, können Sie entweder mit dem Mauszeiger über eine vorhandene Zelle fahren oder an den unteren Rand des Notebooks scrollen und dann eine der Schaltflächen für den Zellentyp auswählen, den Sie hinzufügen möchten.
Sie können die Sprache der Zelle jederzeit nach ihrer Erstellung mit zwei Methoden ändern:
Öffnen Sie das Dropdown-Menü mit den Sprachen, und wählen Sie eine andere Sprache aus.
Verwenden Sie Tastaturkürzel für Snowflake Notebooks.
Zellen verschieben¶
Sie können eine Zelle entweder durch Ziehen und Ablegen mit der Maus oder über das Aktionsmenü verschieben:
(Option 1) Bewegen Sie die Maus über die Zelle, die Sie verschieben möchten. Wählen Sie das Symbol
(Ziehen und Ablegen) auf der linken Seite der Zelle, und verschieben Sie die Zelle an ihren neuen Speicherort.
(Option 2) Wählen Sie das vertikale Ellipsenmenü
(Aktionsmenü) aus. Wählen Sie dann die entsprechende Aktion aus.
Bemerkung
Um den Fokus zwischen Zellen zu verschieben, verwenden Sie die Pfeile Up und Down.
Zelle löschen¶
Um eine Zelle zu löschen, führen Sie die folgenden Schritte in einem Notebook aus:
Wählen Sie das vertikale Ellipsenmenü
(weitere Aktionen) aus.
Wählen Sie Delete aus.
Wählen Sie zur Bestätigung erneut Delete aus.
Sie können auch ein Tastaturkürzel verwenden, um eine Zelle zu löschen.
Hinweise bei Verwendung von Python- und SQL-Zellen finden Sie unter Hinweise zum Ausführen von Notebooks.
Zellen in Snowflake Notebooks ausführen¶
Um Python- und SQL-Zellen in Snowflake Notebooks auszuführen, haben Sie folgende Optionen:
Einzelne Zelle ausführen: Wählen Sie diese Option, wenn Sie den Code häufig aktualisieren.
Alle Zellen im Notebook nacheinander ausführen: Wählen Sie diese Option, bevor Sie ein Notebook präsentieren oder weitergeben, um sicherzustellen, dass die Empfänger aktuelle Informationen sehen.
Drücken Sie CMD + Shift + Return auf einer Mac-Tastatur oder CTRL + Shift + Enter auf einer Windows-Tastatur.
Wählen Sie Run all aus.
Eine Zelle ausführen und zur nächsten Zelle weitergehen: Wählen Sie diese Option, um eine Zelle auszuführen und schneller zur nächsten Zelle weiterzugehen.
Alle obigen ausführen: Wählen Sie diese Option, wenn Sie eine Zelle ausführen, die auf die Ergebnisse vorheriger Zellen verweist.
Alle unten ausführen: Wählen Sie diese Option, wenn Sie eine Zelle ausführen, von der nachfolgende Zellen abhängen. Mit dieser Option werden die aktuelle Zelle und alle folgenden Zellen ausgeführt.
Wenn eine Zelle ausgeführt wird, werden andere Ausführungsanforderungen in eine Warteschlange eingefügt und ausgeführt, sobald die gerade aktive Zelle fertig ist.
Zellenstatus prüfen¶
Der Status der Zellenausführung wird durch die Farbe der Zelle angezeigt. Diese Statusfarbe wird an zwei Stellen angezeigt: an der linken Seite der Zelle und in der rechten Zellennavigationskarte.
Zellenstatusfarbe:
Blauer Punkt: Die Zelle wurde geändert, aber noch nicht ausgeführt.
Rot: Die Zelle wurde in der aktuellen Sitzung ausgeführt und es ist ein Fehler aufgetreten.
Grün: Die Zelle wurde in der aktuellen Sitzung ohne Fehler ausgeführt.
Bewegtes Grün: Zelle wird gerade ausgeführt.
Grau: Die Zelle wurde in einer vorherigen Sitzung ausgeführt und die angezeigten Ergebnisse stammen aus der vorherigen Sitzung. Die Zellenergebnisse der letzten interaktiven Sitzung werden 7 Tage lang aufbewahrt. Interaktive Sitzung bedeutet, dass der Benutzer das Notebook in Snowsight interaktiv ausführt und nicht über einen Zeitplan oder den SQL-Befehl EXECUTE NOTEBOOK.
Blinkt grau: Die Zelle wartet darauf, ausgeführt zu werden, nachdem Sie Run All gewählt haben.
Bemerkung
Markdown-Zellen zeigen keinen Status an.
Nachdem eine Zelle ausgeführt wurde, wird die dafür benötigte Zeit oben in der Zelle angezeigt. Wählen Sie diesen Text, um die Ausführungsdetails anzuzeigen, einschließlich der Start- und Endzeit und der verstrichenen Gesamtzeit.
SQL-Zellen enthalten zusätzliche Informationen, z. B. das Warehouse, das für die Abfrage verwendet wurde, die zurückgegebenen Zeilen und einen Hyperlink zur Abfrage-ID-Seite.
In Ausführung befindliche Zelle stoppen¶
Um die Ausführung von Codezellen, die gerade ausgeführt werden, zu stoppen, wählen Sie Stop oben rechts in der Zelle. Sie können auch Stop oben rechts auf der Notebooks-Seite auswählen. Während die Zellen laufen, wird Run all zu Stop.
Dies stoppt die Ausführung der gerade ausgeführten Zelle und aller nachfolgenden Zellen, die für die Ausführung geplant wurden.
Text mit Markdown formatieren¶
Um Markdown in Ihr Notebook aufzunehmen, fügen Sie eine Markdown-Zelle hinzu:
Verwenden Sie das Tastaturkürzel, und wählen Sie Markdown aus, oder wählen Sie + Markdown aus.
Wählen Sie das Bleistiftsymbol Edit markdown aus oder doppelklicken Sie auf die Zelle, und beginnen Sie mit dem Schreiben von Markdown.
Sie können gültiges Markdown eingeben, um eine Textzelle zu formatieren. Während Sie tippen, wird der formatierte Text unter der Markdown-Syntax angezeigt.

Um nur den formatierten Text anzuzeigen, wählen Sie das Symbol Done editing.

Bemerkung
Markdown-Zellen unterstützen derzeit nicht das Rendern von HTML.
Markdown-Grundlagen¶
Dieser Abschnitt beschreibt die grundlegende Syntax von Markdown, um Ihnen den Einstieg zu erleichtern.
Kopfzeilen
Überschriftebene |
Markdown-Syntax |
Beispiel |
---|---|---|
Oberste Ebene |
# Top-level Header
|
![]() |
2nd-level |
## 2nd-level Header
|
![]() |
3rd-level |
### 3rd-level Header
|
![]() |
Inline Textformatierung
Textformat |
Markdown-Syntax |
Beispiel |
---|---|---|
Kursiv |
*italicized text*
|
![]() |
Fett |
**bolded text**
|
![]() |
Verknüpfung |
[Link text](url)
|
![]() |
Listen
Listentyp |
Markdown-Syntax |
Beispiel |
---|---|---|
Geordnete Liste |
1. first item
2. second item
1. Nested first
2. Nested second
|
![]() |
Ungeordnete Liste |
- first item
- second item
- Nested first
- Nested second
|
![]() |
Code-Formatierung
Sprache |
Markdown-Syntax |
Beispiel |
---|---|---|
Python |
```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
|
![]() |
SQL |
```sql
SELECT * FROM MYTABLE
```
|
![]() |
Bilder einbetten
Dateityp |
Markdown-Syntax |
Beispiel |
---|---|---|
Bild |

|
![]() |
Ein Notebook, das diese Markdown-Beispiele veranschaulicht, finden Sie im Abschnitt Markdown-Zellen des Notebooks „Visuelle Daten-Storys“.
Erläuterungen zu Zellausgaben¶
Wenn Sie eine Python-Zelle ausführen, zeigt das Notebook die folgenden Arten von Ausgaben der Zelle in den Ergebnissen an:
Alle Ergebnisse, die in die Konsole geschrieben werden, wie z. B. Protokolle, Fehler und Warnungen sowie Ausgaben von print()-Anweisungen.
DataFrames werden automatisch mit der interaktiven Tabellenanzeige von Streamlit,
st.dataframe()
gedruckt.Zu den unterstützten DataFrame-Anzeigetypen gehören pandas DataFrame, Snowpark DataFrames und Snowpark-Tabellen.
Für Snowpark werden DataFrames im Eager-Modus ausgewertet, ohne dass Sie den Befehl
.show()
ausführen müssen. Wenn Sie es vorziehen, DataFrame nicht im Eager-Modus auszuwerten, z. B. wenn Sie das Notebook im nicht-interaktiven Modus ausführen, empfiehlt Snowflake, die DataFrame print-Anweisungen zu entfernen, um die Laufzeit Ihres Snowpark-Codes insgesamt zu beschleunigen.
Visualisierungen werden in Ausgaben gerendert. Wenn Sie mehr über die Visualisierung Ihrer Daten erfahren möchten, besuchen Sie Daten in Snowflake Notebooks visualisieren.
Außerdem können Sie auf die Ergebnisse Ihrer SQL-Abfrage in Python zugreifen und umgekehrt. Siehe Zellen und Variablen in Snowflake Notebooks referenzieren.
Grenzen der Zellenausgabe¶
Es werden nur 10.000 Zeilen oder 8 MB der DataFrame-Ausgabe als Zellenergebnisse angezeigt, je nachdem, welcher Wert niedriger ist. Der gesamte DataFrame steht jedoch weiterhin in der Notebook-Sitzung zur Verwendung zur Verfügung. Auch wenn beispielsweise nicht der gesamte DataFrame gerendert wird, können Sie dennoch Datentransformationsaufgaben durchführen.
Für jede Zelle ist nur eine Ausgabe von 20 MB erlaubt. Wenn die Größe der Zellenausgabe 20 MB überschreitet, wird die Ausgabe verworfen. Ziehen Sie in Erwägung, den Inhalt in mehrere Zellen aufzuteilen, wenn dies geschieht.
Zellen und Variablen in Snowflake Notebooks referenzieren¶
Sie können die Ergebnisse der vorherigen Zelle in einer Notebook-Zelle referenzieren. Wenn Sie beispielsweise auf das Ergebnis einer SQL-Zelle oder den Wert einer Python-Variablen verweisen möchten, lesen Sie die folgenden Tabellen:
Bemerkung
Beim Zellnamen des Verweises wird zwischen Groß- und Kleinschreibung unterschieden, und er muss genau mit dem Namen der referenzierten Zelle übereinstimmen.
Referenzieren von SQL-Ausgaben in Python-Zellen:
Typ der Referenzzelle |
Typ der aktuellen Zelle |
Referenz-Syntax |
Beispiel |
---|---|---|---|
SQL |
Python |
|
Konvertieren Sie eine SQL-Ergebnistabelle in einen Snowpark-DataFrame. Wenn eine SQL-Zelle namens SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Sie können auf die Zelle verweisen, um auf das SQL-Ergebnis zuzugreifen: snowpark_df = cell1.to_df()
Sie können das Ergebnis in einen Pandas-DataFrame konvertieren: my_df = cell1.to_pandas()
|
Referenzieren von Variablen im SQL-Code:
Wichtig
In SQL-Code können Sie nur auf Python-Variablen vom Typ string
verweisen. Sie können nicht auf ein Snowpark DataFrame-, pandas DataFrame- oder ein anderes natives Python DataFrame-Format verweisen.
Typ der Referenzzelle |
Typ der aktuellen Zelle |
Referenz-Syntax |
Beispiel |
---|---|---|---|
SQL |
SQL |
|
Beispiel: In SQL-Zelle namens SELECT * FROM {{cell2}} where PRICE > 500
|
Python |
SQL |
|
Beispiel: In einer Python-Zelle namens Python-Variable als Wert verwenden c = "USA"
Sie können den Wert der Variablen SELECT * FROM my_table WHERE COUNTRY = '{{c}}'
Python-Variable als Bezeichner verwenden Wenn die Python-Variable einen SQL-Bezeichner wie einen Spalten- oder Tabellennamen darstellt: column_name = "COUNTRY"
Wenn die Python-Variable einen SQL-Bezeichner darstellt, wie z. B. einen Spalten- oder Tabellennamen ( SELECT * FROM my_table WHERE {{column_name}} = 'USA'
Achten Sie darauf, zwischen Variablen, die als Werte (mit Anführungszeichen) und als Bezeichner (ohne Anführungszeichen) verwendet werden, zu unterscheiden. Hinweis: Ein Verweis auf Python DataFrames wird nicht unterstützt. |
Hinweise zum Ausführen von Notebooks¶
Notebooks werden mit Aufruferrechten ausgeführt. Weitere Hinweise finden Sie unter Ändern des Sitzungskontexts für ein Notebook.
Sie können Python-Bibliotheken importieren, um sie in einem Notebook zu verwenden. Weitere Details dazu finden Sie unter Python-Pakete zur Verwendung in Notebooks importieren.
Wenn Sie auf Objekte in SQL-Zellen verweisen, müssen Sie vollqualifizierte Objektnamen verwenden, es sei denn, Sie verweisen auf Objektnamen in einer bestimmten Datenbank oder einem bestimmten Schema. Siehe Ändern des Sitzungskontexts für ein Notebook.
Notebook-Entwürfe werden alle drei Sekunden gespeichert.
Sie können die Git-Integration verwenden, um Notebook-Versionen zu verwalten.
Sie können eine Timeout-Einstellung für den Leerlauf konfigurieren, um die Notebook-Sitzung automatisch zu beenden, sobald die Einstellung erreicht ist. Weitere Informationen dazu finden Sie unter Leerlaufzeit und Wiederherstellung der Verbindung.
Die Ergebnisse der Notebookzellen sind nur für den Benutzer sichtbar, der das Notebook ausgeführt hat, und sie werden sitzungsübergreifend zwischengespeichert. Beim erneuten Öffnen eines Notebooks werden die Ergebnisse angezeigt, die beim letzten Aufruf des Notebooks durch den Benutzer über die Snowsight erzielt wurden.
BEGIN … END (Snowflake Scripting) wird in SQL-Zellen nicht unterstützt. Verwenden Sie stattdessen die Methode Session.sql().collect() in einer Python-Zelle, um den Scripting-Block auszuführen. Verketten Sie den Aufruf
sql
mit einem Aufrufcollect
, um die SQL-Abfrage sofort auszuführen.Der folgende Code führt einen Snowflake Scripting-Block mit der Methode
session.sql().collect()
aus:from snowflake.snowpark.context import get_active_session session = get_active_session() code_to_run = """ BEGIN CALL TRANSACTION_ANOMALY_MODEL!DETECT_ANOMALIES( INPUT_DATA => SYSTEM$REFERENCE('TABLE', 'ANOMALY_INFERENCE'), TIMESTAMP_COLNAME =>'DATE', TARGET_COLNAME => 'TRANSACTION_AMOUNT', CONFIG_OBJECT => {'prediction_interval': 0.95} ); LET x := SQLID; CREATE TABLE ANOMALY_PREDICTIONS AS SELECT * FROM TABLE(RESULT_SCAN(:x)); END; """ data = session.sql(code_to_run).collect(block=True);