Code in Snowflake Notebooks entwickeln und ausführen

Unter diesem Thema wird beschrieben, wie Sie 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.

Schaltflächen zum Hinzufügen neuer Zellen am unteren Rand des Notebooks

Sie können die Sprache der Zelle jederzeit nach ihrer Erstellung mit zwei Methoden ändern:

Zellen verschieben

Sie können eine Zelle entweder durch Ziehen und Ablegen (Drag & Drop) mit der Maus oder über das Aktionsmenü verschieben:

  1. (Option 1) Bewegen Sie die Maus über die Zelle, die Sie verschieben möchten. Wählen Sie das Drag & Drop-Symbol mit der Maus aus, und verschieben Sie die Zelle an ihre neue Position.

    Drag & Drop zum Verschieben von Zellen.
  2. (Option 2) Wählen Sie das vertikale Ellipsenmenü Weitere Aktionen für das Arbeitsblatt (Aktionsmenü) aus. Wählen Sie dann die entsprechende Aktion aus.

    Aktionsmenü zum Verschieben von Zellen.

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:

  1. Wählen Sie das vertikale Ellipsenmenü Weitere Aktionen für das Arbeitsblatt (weitere Aktionen) aus.

  2. Wählen Sie Delete aus.

  3. 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.

Python- und SQL-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.

    • Drücken Sie CMD + Return auf einer Mac-Tastatur oder CTRL + Enter auf einer Windows-Tastatur.

    • Wählen Sie Nur diese Zelle ausführen oder Run this cell only aus.

  • 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.

    • Drücken Sie Shift + Return auf einer Mac-Tastatur oder Shift + Enter auf einer Windows-Tastatur.

    • Öffnen Sie das vertikale Ellipsenmenü (weitere Aktionen) der Zelle, und wählen Sie Run cell and advance aus.

  • Alle obigen ausführen: Wählen Sie diese Option, wenn Sie eine Zelle ausführen, die auf die Ergebnisse vorheriger Zellen verweist.

    • Öffnen Sie das vertikale Ellipsenmenü (weitere Aktionen) der Zelle, und wählen Sie Run all above aus.

  • 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.

    • Öffnen Sie das vertikale Ellipsenmenü (weitere Aktionen) der Zelle, und wählen Sie Run all below aus.

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 – Zeigt an, dass eine Zelle geändert wurde, aber noch nicht ausgeführt wurde.

  • Rot – Es ist ein Fehler aufgetreten.

  • Grün – Ausführung war erfolgreich.

  • Bewegtes Grün – Zelle wird gerade ausgeführt.

  • Blinkt grau – Zelle wartet darauf, ausgeführt zu werden. Dieser Status tritt auf, wenn bei mehreren Zellen die Ausführung getriggert wurde.

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 aus, um das Fenster mit den Ausführungsdetails anzuzeigen. Sie können die Ausführungsdetails einsehen, einschließlich Start- und Endzeit der Ausführung sowie die insgesamt verstrichene Zeit.

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.

Fenster mit Details zur Zellenausführung.

In Ausführung befindliche Zelle stoppen

Um Codezellen, die gerade ausgeführt werden, zu stoppen, wählen Sie rechts oben in der Zelle die Stopp-Schaltfläche aus.

Dadurch wird die Ausführung der Zelle und aller nachfolgenden Zellen, deren Ausführung geplant war, gestoppt.

Text mit Markdown formatieren

Um Markdown in Ihr Notebook aufzunehmen, fügen Sie eine Markdown-Zelle hinzu:

  1. Verwenden Sie das Tastaturkürzel, und wählen Sie Markdown aus, oder wählen Sie + Markdown aus.

  2. 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.

Screenshot einer Markdown-Zelle. Zeigt Markdown-Text mit einer H1-Überschrift, die mit einem # gekennzeichnet ist, und der Überschrift „An example Markdown cell“, gefolgt von einem Textkörper mit dem Text „This is an example Markdown cell in a Snowflake Notebook“. Unterhalb des rohen Markdown-Inhalts erscheint das gerenderte Markdown in einer anderen Schriftart.

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

Screenshot einer Markdown-Zelle, die nur das gerenderte Markdown anzeigt: die Überschrift „An example Markdown\cell“ und den Textkörper mit „This is an example Markdown cell in a Snowflake Notebook“.

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
Copy
Header eins in Markdown

2nd-level

## 2nd-level Header
Copy
Header eins in Markdown

3rd-level

### 3rd-level Header
Copy
Header eins in Markdown

Inline Textformatierung

Textformat

Markdown-Syntax

Beispiel

Kursiv

*italicized text*
Copy
Kursivtext in Markdown

Fett

**bolded text**
Copy
Fettgedruckter Text in Markdown

Verknüpfung

[Link text](url)
Copy
Link in Markdown

Listen

Listentyp

Markdown-Syntax

Beispiel

Geordnete Liste

1. first item
2. second item
  1. Nested first
  2. Nested second
Copy
Geordnete Liste in Markdown

Ungeordnete Liste

- first item
- second item
  - Nested first
  - Nested second
Copy
Ungeordnete Liste in Markdown

Code-Formatierung

Sprache

Markdown-Syntax

Beispiel

Python

```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
Copy
Python-Codeschnipsel in Markdown

SQL

```sql
SELECT * FROM MYTABLE
```
Copy
SQL Codeschnipsel in Markdown

Bilder einbetten

Dateityp

Markdown-Syntax

Beispiel

Bild

![<alt_text>](<path_to_image>)
Copy
Eingebettetes Bild in Markdown

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, werden die folgenden Typen von Ausgaben von der Zelle in den Ergebnissen angezeigt:

  • Alle Ergebnisse, die in die Konsole geschrieben werden, wie print(), Logs, Fehler und Warnungen.

  • Datenframes werden automatisch mit der interaktiven Streamlit-Tabellenanzeige st.dataframe() ausgegeben.

    • Zu den unterstützten Anzeigetypen für Datenframes gehören pandas-DataFrame, Snowpark-DataFrames und Snowpark Tables.

    • Bei Snowpark werden die ausgegebenen Datenframes im Eager-Modus ausgewertet, ohne dass .show() aufgerufen werden muss. Wenn Sie es vorziehen, den Datenframe nicht im Eager-Modus auszuwerten, z. B. wenn Sie das Notebook im nicht interaktiven Modus ausführen, empfiehlt Snowflake, die print-Anweisungen für den Datenframe zu entfernen, um die gesamte Laufzeit Ihres Snowpark-Codes zu beschleunigen.

  • Visualisierungen werden in Ausgaben gerendert. Weitere Informationen zur Visualisierung Ihrer Daten in Snowflake Notebooks finden Sie unter 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.

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

cell1

Konvertieren Sie eine SQL-Ergebnistabelle in einen Snowpark-DataFrame.

Wenn eine SQL-Zelle namens cell1 Folgendes enthält:

SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Copy

Sie können auf die Zelle verweisen, um auf das SQL-Ergebnis zuzugreifen:

snowpark_df = cell1.to_df()
Copy

Sie können das Ergebnis in einen Pandas-DataFrame konvertieren:

my_df = cell1.to_pandas()
Copy

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

{{cell2}}

Beispiel: In SQL-Zelle namens cell1 wird auf das Zellenergebnisse von cell2 verwiesen:

SELECT * FROM {{cell2}} where PRICE > 500
Copy

Python

SQL

{{variable}}

Beispiel: In einer Python-Zelle namens cell1:

c = "USA"
Copy

Sie können den Wert der Variablen c in einer SQL-Zelle namens cell2 referenzieren, indem Sie die Variable referenzieren:

SELECT * FROM my_table WHERE COUNTRY = {{c}}
Copy

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.

  • Nach einer Stunde Inaktivität (keine Bearbeitung von Code oder Ausführung von Abfragen) wird der Notebook-Kernel heruntergefahren. Snowflake empfiehlt auch, dass Sie die Parameter Ihres Warehouses überprüfen. Wenn STATEMENT_TIMEOUT_IN_SECONDS oder STATEMENT_QUEUED_TIMEOUT_IN_SECONDS auf einen kleinen Wert eingestellt ist, könnte sich das Notebook abschalten oder nicht starten.

  • Sie können die Git-Integration verwenden, um Notebook-Versionen zu verwalten.

  • Die Ergebnisse von Notebook-Zellen werden sitzungsübergreifend zwischengespeichert. Wenn Sie ein Notebook erneut öffnen, werden die Ergebnisse der letzten Ausführung des Notebooks in der UI angezeigt. Die zwischengespeicherten Ergebnisse sind nur für denselben Benutzer sichtbar, der das Notebook ausgeführt hat.

  • 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 Aufruf collect, 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);
    
    Copy

Nächster Schritt