Snowflake mit Notebooks erleben

Snowflake Notebooks ist eine Entwicklungsumgebung, die Sie mit anderen Features von Snowflake verwenden können. In diesem Thema wird gezeigt, wie Sie andere Snowflake-Features in Notebooks nutzen können.

Snowpark Python in Notebooks

Die Snowpark-Bibliothek bietet eine intuitive API für das Abfragen und Verarbeiten von Daten in einer Datenpipeline. Mit der Snowpark-Bibliothek können Sie Anwendungen erstellen, die Daten in Snowflake verarbeiten, ohne dass Daten in das System verschoben werden müssen, das Ihren Anwendungscode ausführt. Sie können die Datenumwandlung und -verarbeitung auch automatisieren, indem Sie gespeicherte Prozeduren schreiben und diese Prozeduren als Aufgaben in Snowflake planen.

Sie können Snowpark verwenden, um Daten in Snowflake in großem Umfang abzufragen und zu verarbeiten, indem Sie Snowpark-Code in einer Python-Zelle Ihres Notebooks schreiben.

Nutzungsbeispiel

Snowpark Python ist in der Snowflake Notebooks-Umgebung vorinstalliert. Das folgende Beispiel verwendet die Snowpark-Bibliothek in einem Notebook, um eine CSV-Datei und eine Snowflake-Tabelle einzulesen und deren Inhalt als Ausgabe anzuzeigen.

  1. Fügen Sie in Ihrem Notebook eine Python-Zelle hinzu, entweder mit dem Tastaturkürzel oder durch Auswahl von + Python. Snowflake Notebooks und Snowpark unterstützen beide Python 3.9.

  2. Richten Sie eine Snowpark-Sitzung ein. In Notebooks ist die Sitzungskontextvariable vorkonfiguriert. Sie können die Methode get_active_session verwenden, um die Sitzungskontextvariable zu abzurufen:

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    
    Copy
  3. Verwenden Sie Snowpark, um eine CSV-Datei von einem Stagingbereich in einen Snowpark-DataFrame zu laden. In diesem Beispiel wird ein Stagingbereich namens tastybyte_stage verwendet.

    df = session.read.options({"infer_schema":True}).csv('@TASTYBYTE_STAGE/app_order.csv')
    
    Copy
  4. Laden Sie die bestehende Snowflake-Tabelle app_order in den Snowpark-DataFrame.

    df = session.table("APP_ORDER")
    
    Copy
  5. Zeigen Sie den Snowpark-DataFrame an.

    df
    
    Copy

Bemerkung

Außerhalb der Snowflake Notebooks-Umgebung müssen Sie df.show() aufrufen, um den DataFrame auszudrucken. In Snowflake Notebooks werden DataFrames im Eager-Modus ausgewertet, wenn df ausgegeben wird. Der DataFrame wird als interaktive Streamlit-DataFrame-Anzeige ausgegeben (st.dataframe). Die DataFrames-Ausgabe ist auf 10.000 Zeilen oder 8 MB begrenzt, je nachdem, welcher Wert niedriger ist.

Snowpark-Einschränkungen

  • Ein Snowflake Notebook erstellt eine Snowpark-Sitzung, sodass Sie die meisten der in einer Snowpark-Sitzungsklasse verfügbaren Methoden verwenden können. Da ein Notebook jedoch innerhalb von Snowflake und nicht in Ihrer lokalen Entwicklungsumgebung ausgeführt wird, können Sie die folgenden Methoden nicht verwenden:

    • session.add_import

    • session.add_packages

    • session.add_requirements

  • Einige Snowpark Python-Operationen funktionieren nicht mit SPROCs. Eine vollständige Liste der Operationen finden Sie unter Beschränkungen bei gespeicherten Python-Prozeduren.

Tipp

Sehen Sie sich weitere Beispiele für Notebooks an, die Snowpark verwenden:

Bemerkung

Diese Quickstarts dienen nur als Beispiele. Wenn Sie dem Beispiel folgen, benötigen Sie möglicherweise zusätzliche Rechte für Daten, Produkte oder Dienste von Drittanbietern, die nicht im Besitz von Snowflake sind oder von Snowflake bereitgestellt werden. Snowflake übernimmt keine Garantie für die Richtigkeit dieser Beispiele.

Streamlit in Notebooks

Streamlit ist eine Open-Source-Python-Bibliothek, mit der sich kundenspezifische Web-Apps für maschinelles Lernen und Data Science leicht erstellen und freigeben lassen. Sie können interaktive Datenanwendungen mit Streamlit direkt in Ihrem Notebook erstellen. Sie können Ihre App direkt in einem Notebook testen und entwickeln. Streamlit ist auf Notebooks vorinstalliert, sodass Sie schnell loslegen können.

Nutzungsbeispiel

Streamlit wird mit der Snowflake Notebooks-Umgebung vorinstalliert. Das Beispiel in diesem Abschnitt erstellt eine interaktive Daten-App mit Streamlit.

  1. Importieren Sie die erforderlichen Bibliotheken.

    import streamlit as st
    import pandas as pd
    
    Copy
  2. Erstellen Sie zunächst einige Beispieldaten für die App.

    species = ["setosa"] * 3 + ["versicolor"] * 3 + ["virginica"] * 3
    measurements = ["sepal_length", "sepal_width", "petal_length"] * 3
    values = [5.1, 3.5, 1.4, 6.2, 2.9, 4.3, 7.3, 3.0, 6.3]
    df = pd.DataFrame({"species": species,"measurement": measurements,"value": values})
    df
    
    Copy
  3. Richten Sie Ihren interaktiven Schieberegler aus der Streamlit-Bibliothek ein.

    st.markdown("""# Interactive Filtering with Streamlit! :balloon:
                Values will automatically cascade down the notebook cells""")
    value = st.slider("Move the slider to change the filter value 👇", df.value.min(), df.value.max(), df.value.mean(), step = 0.3 )
    
    Copy
  4. Zeigen Sie schließlich eine gefilterte Tabelle basierend auf dem Schiebereglerwert an.

    df[df["value"]>value].sort_values("value")
    
    Copy

Sie können über das Notebook in Echtzeit mit der App interagieren. Sehen Sie, wie sich die gefilterte Tabelle je nach dem Wert, den Sie mit dem Schieberegler einstellen, verändert.

Tipp

Das vollständige Beispiel finden Sie im Abschnitt der interaktiven Daten-App des Notebooks Visual Data Stories with Snowflake Notebooks.

Streamlit-Unterstützung in Notebooks

Bei Verwendung der Streamlit-Befehle st.map und st.pydeck_chart stellt Mapbox die Kartenkacheln beim Rendern von Karteninhalten bereit. Mapbox ist eine Anwendung eines Drittanbieters und unterliegt den Bedingungen für externe Angebote von Snowflake.

Die folgenden Streamlit-Elemente werden in Notebooks nicht unterstützt:

Snowpark ML in Notebooks

Snowpark ML ist die Python-Bibliothek, die die APIs für Snowflake ML und für die Entwicklung eigener Modelle des maschinellen Lernens in Snowflake bereitstellt. Mit Snowpark ML können Sie benutzerdefinierte Modelle mit APIs auf der Grundlage beliebter ML-Frameworks entwickeln, automatisch aktualisierte Features zum Trainieren dieser Modelle definieren und sie in einer Modell-Registry speichern, damit sie leicht gefunden und wiederverwendet werden können.

Container Runtime für ML bietet Software- und Hardware-Optionen zur Unterstützung fortgeschrittener Data Science- und Machine Learning-Workloads. Einzelheiten zur Container Runtime finden Sie unter Notebooks auf Container Runtime für ML.

Wichtig

Das snowflake-ml-python-Paket und seine Abhängigkeiten müssen von der Paketrichtlinie Ihrer Organisation zugelassen sein.

Nutzungsbeispiel

Um Snowpark ML zu verwenden, installieren Sie die snowflake-ml-python-Bibliothek für Ihr Notebook:

  1. Wählen Sie im Notebook Packages aus.

  2. Suchen Sie die Bibliothek snowflake-ml-python, und wählen Sie die Bibliothek aus, um sie zu installieren.

Hier ist ein Beispiel dafür, wie Sie die Snowpark ML-Bibliothek für die Vorverarbeitung Ihrer Daten verwenden können:

import snowflake.ml.modeling.preprocessing as pp

# Initialize a StandardScaler object with input and output column names
scaler = pp.StandardScaler(
    input_cols=feature_names_input,
    output_cols=feature_names_input
)

# Fit the scaler to the dataset
scaler.fit(upsampled_data)

# Transform the dataset using the fitted scaler
scaled_features = scaler.transform(upsampled_data)
scaled_features
Copy

Hier ist ein Beispiel dafür, wie Sie die Snowpark ML-Bibliothek für Modelltraining und Inferenz verwenden können:

from snowflake.ml.modeling.ensemble import RandomForestClassifier

# Initialize a RandomForestClassifier object with input, label, and output column names
model = RandomForestClassifier(
    input_cols=feature_names_input,
    label_cols=label,
    output_cols=output_label,
)

# Train the RandomForestClassifier model using the training set
model.fit(training)

# Predict the target variable for the testing set using the trained model
results = model.predict(testing)
Copy

Tipp

Weitere Beispiele für die Verwendung von Snowpark ML finden Sie in den folgenden Notebooks:

Snowflake ML Registry in Notebooks

Die Snowflake Model Registry ermöglicht es Ihnen, Modelle und Ihre Metadaten in Snowflake sicher zu verwalten, unabhängig von ihrer Herkunft. Die Modell-Registry speichert Machine-Learning-Modelle als First-Class-Objekte auf Schema-Ebene in Snowflake, sodass sie von anderen in Ihrer Organisation leicht gefunden und verwendet werden können. Unter Verwendung von Klassen der Snowpark ML-Bibliothek können Sie Registrys erstellen und darin Modelle speichern. Modelle können mehrere Versionen haben, und Sie können eine Version als Standardversion festlegen.

Nutzungsbeispiel

Um die Snowflake ML-Registry zu verwenden, installieren Sie die snowflake-ml-python-Bibliothek für Ihr Notebook:

  1. Wählen Sie oben in Ihrem Notebook Packages aus.

  2. Suchen Sie nach dem Paket snowflake-ml-python, und wählen Sie die Bibliothek aus, um es zu installieren.

Hier ist ein Beispiel dafür, wie Sie die Snowflake ML-Registry verwenden können, um ein Modell zu protokollieren:

from snowflake.ml.registry import Registry
# Create a registry and log the model
native_registry = Registry(session=session, database_name=db, schema_name=schema)

# Let's first log the very first model we trained
model_ver = native_registry.log_model(
    model_name=model_name,
    version_name='V0',
    model=regressor,
    sample_input_data=X, # to provide the feature schema
)

# Add evaluation metric
model_ver.set_metric(metric_name="mean_abs_pct_err", value=mape)

# Add a description
model_ver.comment = "This is the first iteration of our Diamonds Price Prediction model. It is used for demo purposes."

# Show Models
native_registry.get_model(model_name).show_versions()
Copy

Tipp

Sehen Sie sich in diesem End-to-End-Beispiel an, wie Sie Snowflake ML Registry verwenden.

pandas on Snowflake in Notebooks

Mit pandas on Snowflake können Sie Ihren pandas-Code verteilt direkt auf Ihren Daten in Snowflake ausführen. Durch die Änderung der Importanweisung und einiger Codezeilen erhalten Sie die gleiche vertraute pandas-native Erfahrung mit den Skalierbarkeits- und Sicherheitsvorteilen von Snowflake.

Mit pandas on Snowflake können Sie mit viel größeren Datensätzen arbeiten und vermeiden den Zeit- und Kostenaufwand für die Portierung Ihrer pandas-Pipelines auf andere Big Data-Frameworks oder die Bereitstellung großer und teurer Rechner. Snowpark pandas führt Workloads nativ in Snowflake durch Transpilierung nach SQL aus und kann so die Vorteile der Parallelisierung und der Data Governance und Sicherheit von Snowflake nutzen.

pandas on Snowflake wird über die API Snowpark pandas als Teil der Snowpark-Bibliothek für Python bereitgestellt, die eine skalierbare Datenverarbeitung von Python-Code innerhalb der Snowflake-Plattform ermöglicht.

Nutzungsbeispiel

Snowpark pandas ist in Snowpark Python Version 1.17 und höher verfügbar. Snowpark Python wird mit der Snowflake Notebooks-Umgebung vorinstalliert.

  1. Um Modin zu installieren, wählen Sie modin aus Packages, und stellen Sie sicher, dass die Version 0.28.1 oder höher ist.

  2. Um die pandas-Version einzustellen, wählen Sie pandas aus Packages, und stellen Sie sicher, dass die Version 2.2.1 ist.

Importieren Sie Snowpark Python und Modin in eine Python-Zelle:

import modin.pandas as pd
import snowflake.snowpark.modin.plugin
Copy
  1. Erstellen Sie eine Snowpark-Sitzung:

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    
    Copy
  2. Starten Sie mit der Verwendung der Snowpark Python-API:

    # Create a Snowpark Pandas DataFrame with sample data.
    df = pd.DataFrame([[1, 'Big Bear', 8],[2, 'Big Bear', 10],[3, 'Big Bear', None],
                        [1, 'Tahoe', 3],[2, 'Tahoe', None],[3, 'Tahoe', 13],
                        [1, 'Whistler', None],['Friday', 'Whistler', 40],[3, 'Whistler', 25]],
                        columns=["DAY", "LOCATION", "SNOWFALL"])
    # Drop rows with null values.
    df.dropna()
    # Compute the average daily snowfall across locations.
    df.groupby("LOCATION").mean()["SNOWFALL"]
    
    Copy

Tipp

Weitere Beispiele für die Verwendung von pandas on Snowflake finden Sie unter Erste Schritte mit pandas on Snowflake.

Snowflake Python-API in Notebooks

Die Snowflake Python-API ist eine vereinheitlichte Bibliothek, die Python nahtlos mit Snowflake-Workloads verbindet. Es ist vorgesehen, umfassende APIs für die Interaktion mit zentralen Snowflake-Ressourcen über Data Engineering, Snowpark, Snowpark ML und Anwendungs-Workloads hinweg bereitzustellen, ohne dass API-Befehle verwendet werden müssen.

Sie können die Snowflake-Python-API verwenden, um Snowflake-Ressourcen zu verwalten, indem Sie sie erstellen, löschen oder ändern und vieles mehr. Sie können Python verwenden, um Aufgaben auszuführen, die sonst mit Snowflake SQL-Befehlen ausgeführt werden müssten.

In Notebooks ist die Sitzungskontextvariable vorkonfiguriert. Sie können die Methode get_active_session verwenden, um die Sitzungskontextvariable zu abzurufen:

from snowflake.snowpark.context import get_active_session
session = get_active_session()
Copy

Erstellen Sie ein Root-Objekt, von dem aus Sie die Snowflake Python-API verwenden können:

from snowflake.core import Root
api_root = Root(session)
Copy

Hier ist ein Beispiel dafür, wie Sie mit der Python-API eine Datenbank und ein Schema erstellen:

# Create a database and schema by running the following cell in the notebook:
database_ref = api_root.databases.create(Database(name="demo_database"), mode="orreplace")
schema_ref = database_ref.schemas.create(Schema(name="demo_schema"), mode="orreplace")
Copy

Tipp

Ein ausführlicheres Beispiel für die Verwendung von Snowflake Python-API finden Sie im Notebook-Beispiel Erstellen eines Snowflake-Objekts mit der Python-API auf Github.