Snowflake Notebooksは、Snowsight上でSQL・Python・Markdownを セル単位で切り替えながらインタラクティブにデータ分析を行うマネージド環境です。 Snowpark DataFrameとの統合、組み込みの可視化機能、Git連携によるバージョン管理、 チームでの共同編集をすべてSnowflakeのセキュリティモデルの中で実現します。
Snowflake Notebooksは以下の構成要素で動作します。
ノートブックはSnowsightのUIまたはSQLで作成します。
-- SQLでNotebookを作成
CREATE OR REPLACE NOTEBOOK analytics.notebooks.monthly_report
FROM '@analytics.notebooks.nb_stage'
MAIN_FILE = 'monthly_report.ipynb'
QUERY_WAREHOUSE = analytics_wh
COMMENT = '月次レポート分析ノートブック';
-- Notebookの一覧確認
SHOW NOTEBOOKS IN SCHEMA analytics.notebooks;
-- Notebookの権限付与
GRANT USAGE ON NOTEBOOK analytics.notebooks.monthly_report
TO ROLE analyst_role;SQLセルでは通常のSnowflake SQLをそのまま実行できます。 結果はテーブル形式で表示され、チャートへの切り替えも可能です。
-- SQLセルの例: 売上サマリ
SELECT
DATE_TRUNC('MONTH', order_date) AS order_month,
product_category,
COUNT(*) AS order_count,
SUM(amount) AS total_revenue,
AVG(amount) AS avg_order_value
FROM sales.orders
WHERE order_date >= '2025-01-01'
GROUP BY order_month, product_category
ORDER BY order_month, total_revenue DESC;PythonセルではSnowpark DataFrameを使ったデータ処理や、 pandas / matplotlib / plotly等のライブラリを使った分析・可視化が可能です。 SQLセルの結果をPythonセルで参照する仕組みも用意されています。
# Pythonセルの例: Snowpark DataFrameによる集計
from snowflake.snowpark.context import get_active_session
from snowflake.snowpark.functions import col, sum as sf_sum, count
session = get_active_session()
orders_df = session.table("sales.orders")
monthly_summary = (
orders_df
.filter(col("order_date") >= "2025-01-01")
.group_by("product_category")
.agg(
count("*").alias("order_count"),
sf_sum("amount").alias("total_revenue")
)
.sort(col("total_revenue").desc())
)
monthly_summary.show()SQLセルの結果にはセル名が付けられ、Pythonセルからその名前で参照できます。
# cell_name_of_sql_cell がSQLセルの名前の場合:
# SQLの結果をSnowpark DataFrameとして取得
df = cell_name_of_sql_cell.to_df()
# SQLの結果をpandas DataFrameとして取得
pdf = cell_name_of_sql_cell.to_pandas()
# pandasで追加分析
print(f"行数: {len(pdf)}")
print(pdf.describe())
# matplotlibで可視化
import matplotlib.pyplot as plt
pdf.plot(kind='bar', x='PRODUCT_CATEGORY', y='TOTAL_REVENUE')
plt.title('カテゴリ別売上')
plt.tight_layout()
plt.show()SQLセルの実行結果は、テーブル表示に加えて Snowsightの組み込みチャート機能で可視化できます。
Pythonセルではmatplotlib / plotly / Altairなどのライブラリも使用でき、 より高度なカスタム可視化が可能です。
# Pythonセルでのplotlyによるインタラクティブ可視化
import plotly.express as px
pdf = cell_monthly_data.to_pandas()
fig = px.line(
pdf,
x='ORDER_MONTH',
y='TOTAL_REVENUE',
color='PRODUCT_CATEGORY',
title='月次売上推移(カテゴリ別)'
)
fig.show()Snowflake NotebooksはGitリポジトリとの連携をサポートし、 ノートブックのバージョン管理とチーム開発を可能にします。
-- Git Repository Integrationの作成
CREATE OR REPLACE GIT REPOSITORY analytics.notebooks.ml_repo
API_INTEGRATION = github_api_integration
GIT_CREDENTIALS = github_secret
ORIGIN = 'https://github.com/myorg/ml-notebooks.git';
-- Gitリポジトリからノートブックをフェッチ
ALTER GIT REPOSITORY analytics.notebooks.ml_repo FETCH;
-- リポジトリ内のファイル一覧
SHOW GIT BRANCHES IN analytics.notebooks.ml_repo;
ls @analytics.notebooks.ml_repo/branches/main/;
-- Gitリポジトリからノートブックを作成
CREATE OR REPLACE NOTEBOOK analytics.notebooks.feature_engineering
FROM '@analytics.notebooks.ml_repo/branches/main/'
MAIN_FILE = 'feature_engineering.ipynb'
QUERY_WAREHOUSE = ml_wh;ノートブックはSnowflakeのRBACで権限管理されます。 複数のユーザーが同じノートブックを編集でき、変更はリアルタイムに同期されます。
-- アナリストロールにノートブックの使用権限を付与
GRANT USAGE ON NOTEBOOK analytics.notebooks.monthly_report
TO ROLE analyst_role;
-- データサイエンティストロールにノートブックの所有権を付与
GRANT OWNERSHIP ON NOTEBOOK analytics.notebooks.ml_experiment
TO ROLE data_scientist_role;
-- ウェアハウスの使用権限(ノートブック実行に必要)
GRANT USAGE ON WAREHOUSE analytics_wh
TO ROLE analyst_role;PythonセルではSnowflakeのAnacondaチャネルからパッケージを追加できます。 ノートブックのUIからパッケージの検索・追加が可能です。
# ノートブック内でのパッケージ追加(Pythonセル)
# Snowsightの「Packages」パネルからGUIで追加するか、以下のようにセッションで追加
session.add_packages('pandas', 'scikit-learn==1.4.0', 'plotly')
# requirements.txtからの一括追加
# session.add_requirements('requirements.txt')ノートブックをタスクとしてスケジュール実行することで、 定期的なレポート生成やモデルの再学習を自動化できます。
-- ノートブックをスケジュール実行するタスク
CREATE OR REPLACE TASK run_monthly_report
WAREHOUSE = analytics_wh
SCHEDULE = 'USING CRON 0 6 1 * * Asia/Tokyo'
AS
EXECUTE NOTEBOOK analytics.notebooks.monthly_report;
ALTER TASK run_monthly_report RESUME;SnowPro
問題 1
データサイエンティストがSnowflake Notebooksで分析を行い、SQLで抽出したデータをPythonでscikit-learnを使ってモデル学習したいと考えています。正しい手順の組み合わせはどれですか?
正解: B
Snowflake Notebooksでは、SQLセルの結果にセル名でアクセスし、to_pandas()でpandas DataFrameに変換してPythonセルで利用できます。データはSnowflake内に留まるためCSVのダウンロードは不要であり、JDBC接続を手動で確立する必要もありません。SQL/Pythonの混在は同一ノートブック内で可能です。
Snowflake NotebooksはJupyter Notebookと何が違いますか?
Snowflake NotebooksはSnowsightのUI内で動作するマネージドノートブック環境です。Jupyterと同様にセル単位でSQL/Pythonを実行できますが、データがSnowflake外に出ない点、Snowflakeの認証・RBAC・ガバナンスがそのまま適用される点が大きな違いです。compute環境はSnowflakeのウェアハウスまたはSnowpark Container Services上で動作し、ローカルマシンにPythonやライブラリをインストールする必要がありません。
NotebooksでPythonとSQLを混在させられますか?
はい。セル単位でSQL / Python / Markdownを切り替えられます。SQLセルの結果をPythonセルでSnowpark DataFrameまたはpandas DataFrameとして受け取ることもでき、SQLで抽出→Pythonで機械学習→SQLで結果書き戻しといった一連のワークフローを1つのノートブック内で完結できます。
NotebooksでGit連携はできますか?
はい。Snowflake NotebooksはGitリポジトリとの連携をサポートしています。SnowsightからGitリポジトリ(GitHub / GitLab / Bitbucket等)を接続し、ノートブックファイルのバージョン管理、ブランチ切り替え、コミット、プル操作が可能です。CI/CDパイプラインとの統合により、ノートブックの変更を本番環境に自動デプロイする運用も構築できます。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Snowflake資格一覧|全11試験(SnowPro)の難易度・費用
Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...
Snowflake試験の難易度ランキング|全11資格を徹底比較
Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...
Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ
Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...
SnowPro Core試験完全解説|出題範囲・問題例・合格戦略
SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...
SnowPro Platform Associate完全解説|入門試験の攻略
SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...