Explorer Snowflake avec des notebooks¶
Snowflake Notebooks est un environnement de développement que vous pouvez utiliser avec d’autres fonctions de Snowflake. Cette rubrique montre comment exploiter d’autres fonctions de Snowflake dans les notebooks.
Snowpark Python dans les notebooks¶
La bibliothèque Snowpark fournit une API intuitive pour l’interrogation et le traitement des données dans un pipeline de données. Grâce à la bibliothèque Snowpark, vous pouvez créer des applications qui traitent les données dans Snowflake sans les déplacer vers le système où s’exécute le code de votre application. Vous pouvez également automatiser la transformation et le traitement des données en écrivant des procédures stockées et en planifiant ces procédures en tant que tâches dans Snowflake.
Vous pouvez utiliser Snowpark pour effectuer des requêtes et traiter des données à l’échelle dans Snowflake en écrivant du code Snowpark dans une cellule Python de votre notebook.
Exemple d’utilisation¶
Snowpark Python est préinstallé dans l’environnement Snowflake Notebooks. L’exemple suivant utilise la bibliothèque Snowpark dans un notebook pour lire un fichier CSV et une table Snowflake et afficher son contenu en sortie.
Dans votre notebook, ajoutez une cellule Python, soit en utilisant le raccourci clavier, soit en sélectionnant + Python. Snowflake Notebooks et Snowpark supportent tous deux Python 3.9.
Configurer une session de Snowpark. Dans les notebooks, la variable contextuelle de la session est préconfigurée. Vous pouvez utiliser la méthode
get_active_session
pour obtenir la variable de contexte de la session :from snowflake.snowpark.context import get_active_session session = get_active_session()
Utilisez Snowpark pour charger un fichier CSV dans un DataFrame Snowpark à partir d’une zone de préparation. Cet exemple utilise une zone de préparation appelée
tastybyte_stage
.df = session.read.options({"infer_schema":True}).csv('@TASTYBYTE_STAGE/app_order.csv')
Chargez une table Snowflake existante,
app_order
, dans le DataFrame Snowpark.df = session.table("APP_ORDER")
Affichez le DataFrame Snowpark.
df
Note
En dehors de l’environnement Snowflake Notebooks, vous devez appeler df.show()
pour imprimer le document DataFrame. Dans les Snowflake Notebooks, les DataFrames sont évalués immédiatement lorsque df
est affiché. Le DataFrame est affiché sous la forme d’un affichage interactif de DataFrame Streamlit (st.dataframe). La sortie des DataFrames est limitée à 10 000 lignes ou à 8 MB, la valeur la plus faible étant retenue.
Limites de Snowpark¶
Un notebook Snowflake crée une session Snowpark, vous pouvez donc utiliser la plupart des méthodes disponibles dans une classe de session Snowpark. Cependant, étant donné qu’un notebook s’exécute à l’intérieur de Snowflake plutôt que dans votre environnement de développement local, vous ne pouvez pas utiliser les méthodes suivantes :
session.add_import
session.add_packages
session.add_requirements
Certaines opérations de Snowpark Python ne fonctionnent pas avec les SPROCs. Pour obtenir la liste complète des opérations, consultez Limitations des procédures stockées Python.
Astuce
Voir d’autres exemples de notebooks qui utilisent Snowpark :
Note
Ces démarrages rapides ne sont donnés qu’à titre d’exemple. Suivre l’exemple peut nécessiter des droits supplémentaires sur les données, les produits ou les services de tiers qui ne sont pas détenus ou fournis par Snowflake. Snowflake ne garantit pas l’exactitude de ces exemples.
Streamlit dans les notebooks¶
Streamlit est une bibliothèque Python open-source qui facilite la création et le partage d’applications Web personnalisées pour le machine learning et la science des données. Vous pouvez créer des applications de données interactives avec Streamlit directement dans votre notebook. Vous pouvez tester et développer votre application directement dans un notebook. Streamlit est préinstallé dans les notebooks, ce qui vous permet de commencer rapidement.
Exemple d’utilisation¶
Streamlit est livré préinstallé avec l’environnement de Snowflake Notebooks. L’exemple de cette section crée une application de données interactive à l’aide de Streamlit.
Importez les bibliothèques nécessaires
import streamlit as st import pandas as pd
Créez d’abord quelques données d’exemple pour l’application.
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
Installez votre curseur interactif à partir de la bibliothèque Streamlit.
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 )
Enfin, affichez une table filtrée en fonction de la valeur du curseur.
df[df["value"]>value].sort_values("value")
Vous pouvez interagir avec l’application en temps réel à partir du notebook. Voyez la table filtrée changer en fonction de la valeur que vous avez définie sur le curseur.
Astuce
Pour un exemple complet, consultez la section sur l’application de données interactive du notebook Visualisation de données avec Snowflake Notebooks.
Prise en charge de Streamlit dans Notebooks¶
Lorsque vous utilisez les commandes Streamlit st.map ou st.pydeck_chart, Mapbox fournit les vignettes de la carte lors du rendu du contenu de la carte. Mapbox est une application tierce et est soumise aux Conditions des conditions des offres externes Snowflake.
Les éléments Streamlit suivants ne sont pas pris en charge dans Notebooks :
-
Les propriétés
page_title
,page_icon
etmenu_items
de la commandest.set_page_config
ne sont pas prises en charge. Liens d’ancrage
Icônes matérielles en Markdown
Snowpark ML dans Notebooks¶
Snowpark ML est la bibliothèque Python qui fournit les APIs pour Snowflake ML et pour le développement de modèles de machine learning personnalisés dans Snowflake. Avec Snowpark ML, vous pouvez développer des modèles personnalisés à l’aide d’APIs basées sur des frameworks ML populaires, définir des fonctions mises à jour automatiquement pour les entraîner et les stocker dans un registre de modèles pour faciliter leur découverte et leur réutilisation.
Container Runtime pour ML fournit des options logicielles et matérielles pour prendre en charge les charges de travail avancées de science des données et de machine learning. Pour plus de détails sur l’environnement d’exécution des conteneurs, voir Notebooks sur Container Runtime pour ML.
Important
Le paquet snowflake-ml-python
et ses dépendances doivent être autorisés par la politique de paquets de votre entreprise.
Exemple d’utilisation¶
Pour utiliser Snowpark ML, installez la bibliothèque snowflake-ml-python
pour votre notebook :
À partir du notebook, sélectionnez Packages.
Localisez la bibliothèque snowflake-ml-python et sélectionnez-la pour l’installer.
Voici un exemple de la façon dont vous pouvez utiliser la bibliothèque Snowpark ML pour le prétraitement de vos données :
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
Voici un exemple de la façon dont vous pouvez utiliser la bibliothèque Snowpark ML pour l’entraînement et l’inférence de modèles :
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)
Astuce
- Pour d’autres exemples d’utilisation de Snowpark ML, consultez les notebooks suivants :
Registre Snowflake ML dans Notebooks¶
Le Snowflake Model Registry vous permet de gérer en toute sécurité les modèles et vos métadonnées dans Snowflake, quelle que soit leur origine. Le registre des modèles stocke les modèles de machine learning en tant qu’objets de niveau schéma de première classe dans Snowflake afin qu’ils puissent être facilement trouvés et utilisés par d’autres personnes au sein de votre organisation. Vous pouvez créer des registres et y stocker des modèles en utilisant des classes dans la bibliothèque Snowpark ML. Les modèles peuvent avoir plusieurs versions et vous pouvez désigner une version comme étant la version par défaut.
Exemple d’utilisation¶
Pour utiliser le registre ML de Snowflake, installez la bibliothèque snowflake-ml-python
pour votre notebook :
Depuis votre notebook, sélectionnez Packages en haut de la page.
Recherchez le paquet snowflake-ml-python et sélectionnez la bibliothèque pour l’installer.
Voici un exemple de la façon dont vous pouvez utiliser le registre ML de Snowflake pour enregistrer un modèle :
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()
Astuce
Voir cet exemple de bout en bout sur l’utilisation du registre Snowflake ML.
Pandas on Snowflake dans des notebooks¶
Pandas on Snowflake vous permet d’exécuter votre code Pandas de manière distribuée directement sur vos données dans Snowflake. Il suffit de modifier l’instruction d’importation et quelques lignes de code pour obtenir la même expérience familière que celle de Pandas, tout en bénéficiant des avantages de Snowflake en termes d’évolutivité et de sécurité.
Avec pandas on Snowflake, vous pouvez travailler avec des ensembles de données beaucoup plus importants et éviter le temps et les dépenses liés au portage de vos pipelines pandas vers d’autres frameworks big data ou à l’approvisionnement de machines volumineuses et coûteuses. Elle exécute des charges de travail nativement dans Snowflake par transpilation vers SQL, ce qui lui permet de tirer parti de la parallélisation et des avantages de Snowflake en matière de gouvernance et de sécurité des données.
Pandas on Snowflake est livré via l’API Pandas Snowpark dans le cadre de la bibliothèque Python Snowpark, qui permet un traitement évolutif des données du code Python au sein de la plateforme Snowflake.
Exemple d’utilisation¶
Snowpark Pandas est disponible à partir de la version 1.17 de Snowpark Python. Snowpark Python est pré-installé avec l’environnement Snowflake Notebooks.
Pour installer Modin, sélectionnez
modin
à partir de Packages et assurez-vous que la version est 0.28.1 ou ultérieure.Pour définir la version de Pandas, sélectionnez
pandas
à partir de Packages et assurez-vous que la version est 2.2.1.
Dans une cellule Python, importez Snowpark Python et Modin :
import modin.pandas as pd import snowflake.snowpark.modin.plugin
Créez une session Snowpark :
from snowflake.snowpark.context import get_active_session session = get_active_session()
Commencez à utiliser l’API Snowpark Python :
# 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"]
Astuce
Pour plus d’exemples sur l’utilisation de pandas on Snowflake, voir Commencer avec pandas on Snowflake.
API Python Snowflake dans Notebooks¶
L”API Python Snowflake est une bibliothèque unifiée qui relie de manière transparente Python aux charges de travail Snowflake. Elle est destinée à fournir des APIs complètes pour interagir avec les ressources centrales de Snowflake à travers l’ingénierie des données, Snowpark, Snowpark ML et les charges de travail d’application à l’aide d’une API Python de première classe.
Vous pouvez utiliser l’API Python de Snowflake pour gérer les ressources Snowflake en les créant, en les supprimant, en les modifiant, etc. Vous pouvez utiliser Python pour effectuer des tâches que vous pourriez sinon réaliser via les commandes SQL Snowflake.
Dans Notebooks, la variable contextuelle de la session est préconfigurée. Vous pouvez utiliser la méthode get_active_session
pour obtenir la variable de contexte de la session :
from snowflake.snowpark.context import get_active_session session = get_active_session()
Créez un objet Root
à partir duquel vous pourrez utiliser l’API Python Snowflake :
from snowflake.core import Root api_root = Root(session)
Voici un exemple de création d’une base de données et d’un schéma à l’aide de l’API Python :
# 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")Astuce
Pour un exemple plus détaillé de l’utilisation de l’API Python Snowflake, consultez l’exemple de notebook Créer un objet Snowflake avec l’API Python sur Github.