Snowflake Notebooks
Snowflake Notebooks provide an interactive environment for data exploration, analysis, and visualization directly within the Snowflake platform.
Notebook Definition
Notebook Features
SQL Cells
SQL cells execute queries directly against Snowflake warehouses, returning results as tabular output. SQL cells support all standard Snowflake DDL, DML, and analytical functions.
-- Example SQL cell: Aggregation query
SELECT
category,
COUNT(*) AS product_count,
AVG(price) AS avg_price,
SUM(quantity_sold) AS total_sold
FROM products
WHERE region = 'US'
GROUP BY category
ORDER BY total_sold DESC;
Python Cells (Snowpark)
Python cells run Snowpark Python code, allowing DataFrames, ML model training, and complex transformations using Python libraries.
from snowflake.snowpark import Session
from snowflake.snowpark.functions import col, avg, count
# Create a Snowpark session from notebook context
session = session # Session is auto-available in notebook
# Load data as Snowpark DataFrame
df = session.table("orders")
# Perform transformations
result = df.filter(col("order_date") >= "2025-01-01") \
.groupBy("region", "product_category") \
.agg(
count("*").alias("order_count"),
avg("order_total").alias("avg_order_value")
) \
.orderBy(col("order_count").desc())
# Show results
result.show()
Markdown Cells
Markdown cells provide documentation, notes, and explanations within the notebook, making it easy to share context with collaborators.
Visualizations
Notebooks support inline visualizations using Python plotting libraries or Snowflake's built-in chart capabilities.
import matplotlib.pyplot as plt
import pandas as pd
# Convert Snowpark DataFrame to pandas for plotting
pdf = result.to_pandas()
plt.figure(figsize=(10, 6))
plt.bar(pdf['PRODUCT_CATEGORY'], pdf['AVG_ORDER_VALUE'])
plt.xlabel('Category')
plt.ylabel('Average Order Value ($)')
plt.title('Average Order Value by Product Category')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
Best Practices for Notebook Organization
- Start with a Markdown cell describing the notebook purpose, data sources, and expected outputs
- Use separate SQL cells for each logical operation (data loading, transformation, aggregation)
- Keep cells focused: Each cell should perform one clear task and display one result
- Add Markdown cells between code cells to explain what the next code block does
- Use clear variable names that indicate data lineage and processing steps
- Include error handling in Python cells for production-oriented notebooks
- Version control notebooks by committing them to Git or using Snowflake's notebook versioning
- Document assumptions about data schema, date ranges, and filter criteria in Markdown cells
Use Cases
Data Exploration
-- Explore table structure and sample data
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'CUSTOMER_DATA'
ORDER BY ordinal_position;
SELECT * FROM customer_data LIMIT 100;
ML Model Prototyping
from snowflake.ml.modeling.preprocessing import StandardScaler
from snowflake.ml.modeling.linear_model import LinearRegression
# Load training data
train_df = session.table("training_features")
labels = session.table("training_labels")
# Feature engineering
scaler = StandardScaler(
input_cols=["feature_1", "feature_2", "feature_3"],
output_cols=["scaled_1", "scaled_2", "scaled_3"]
)
scaler.fit(train_df)
scaled_df = scaler.transform(train_df)
# Train model
lr = LinearRegression(
input_cols=["scaled_1", "scaled_2", "scaled_3"],
label_cols=["target"]
)
lr.fit(scaled_df)
# Evaluate
predictions = lr.predict(scaled_df)
predictions.select("target", "PREDICTED_TARGET").show(20)
Team Collaboration
-- Create a shareable analysis notebook
-- Cell 1: Data quality checks
SELECT
COUNT(*) AS total_records,
SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS missing_email,
SUM(CASE WHEN signup_date IS NULL THEN 1 ELSE 0 END) AS missing_signup,
MIN(signup_date) AS earliest_signup,
MAX(signup_date) AS latest_signup
FROM customer_master;
See Also
- Snowpark Python - Snowpark Python SDK for data engineering and ML workflows
- Cortex AI - AI and ML functions within Snowflake
- Stored Procedures - Packaging notebook logic into reusable stored procedures
- Monitoring - Monitoring notebook usage and warehouse consumption