Snowflake

Snowflake Notebooksで分析・共有: SQL/Python切替、Snowpark連携、Git統合

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Snowflake Notebooksは、Snowsight上でSQL・Python・Markdownを セル単位で切り替えながらインタラクティブにデータ分析を行うマネージド環境です。 Snowpark DataFrameとの統合、組み込みの可視化機能、Git連携によるバージョン管理、 チームでの共同編集をすべてSnowflakeのセキュリティモデルの中で実現します。

Notebooksのアーキテクチャ

Snowflake Notebooksは以下の構成要素で動作します。

  • フロントエンド: Snowsight(WebUI)内のノートブックエディタ。 セルの追加・実行・可視化をブラウザ上で操作
  • SQLランタイム: SQLセルの実行は指定したウェアハウスで処理される。 通常のSnowflakeクエリと同じ実行エンジンを使用
  • Pythonランタイム: PythonセルはSnowparkのサーバーサイドランタイムで実行される。 ウェアハウスまたはSPCSのコンピュートプールをバックエンドとして使用
  • ストレージ: ノートブック自体はSnowflakeのスキーマ内にオブジェクトとして保存される。 データはSnowflake外に出ない

ノートブックの作成と基本操作

ノートブックは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セルの実行

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セルとの連携

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セルの連携

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の組み込みチャート機能で可視化できます。

  • 棒グラフ / 折れ線グラフ: 時系列の推移やカテゴリ比較
  • 散布図: 2変数の相関分析
  • ヒートマップ: 多次元データの分布
  • 面グラフ: 構成比の推移

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()

Git統合

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;

セキュリティとガバナンス

  • データの非外部化: 分析データはSnowflake内に留まり、ローカルへのダウンロードを防止
  • RBAC統合: ノートブックの実行結果はユーザーのロール権限に基づいてフィルタリング
  • マスキングポリシー適用: Dynamic Data Maskingが有効なテーブルはノートブック内でもマスク表示
  • 監査ログ: ノートブックの実行履歴はACCOUNT_USAGE.QUERY_HISTORYに記録

試験で問われるポイント

  • ノートブックはSnowsight内で動作し、データがSnowflake外に出ない
  • セル単位でSQL / Python / Markdownを切り替え可能
  • SQLセルの結果をPythonセルでDataFrameとして受け取れる
  • Git統合によるバージョン管理とチーム開発をサポート
  • ノートブックの実行にはウェアハウスのUSAGE権限が必要
  • SnowflakeのRBAC・マスキングポリシー・ガバナンスがそのまま適用される

問題で確認

SnowPro

問題 1

データサイエンティストがSnowflake Notebooksで分析を行い、SQLで抽出したデータをPythonでscikit-learnを使ってモデル学習したいと考えています。正しい手順の組み合わせはどれですか?

  1. SQLセルでデータを抽出し、CSVファイルをローカルにダウンロードしてからJupyterでモデル学習を実行する
  2. SQLセルでデータを抽出し、Pythonセルでそのセル結果をto_pandas()で取得してscikit-learnでモデルを学習する
  3. PythonセルでJDBC接続を手動で確立し、fetchall()でデータを取得してモデルを学習する
  4. SQLセルとPythonセルは同一ノートブック内で併用できないため、別々のノートブックで実行する

正解: 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パイプラインとの統合により、ノートブックの変更を本番環境に自動デプロイする運用も構築できます。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.