🔰

SnowPro Associate資格への道 ~Part1:Snowflake Notebooks~

に公開

はじめに

9月のSnowflake World Tour TokyoまでにSnowPro Coreをとります!
試験日8月28日までいよいよ、39日。
やばいもうすぐ1か月切っちゃう💦

閑話休題 Associate試験について

とその前に、7月にSnowflake Platform Trainingを受けました(今週開催分は満席のようです💦)。
Snowflake Platform Trainingを受講してアンケートに回答すると、SnowPro Associateのバウチャーがもらえます。

ぜひ資格試験に興味がある方やSnowflake World Tour Tokyoで資格取得者専用ラウンジに入りたい、Tシャツをゲットしたい方は次回のSnowflake Platform Trainingも要チェック!

というわけで前置きが長くなりましたが、SnowPro Coreを受ける前にAssociate試験を受けちゃおうということで、横道にそれている今日この頃です。

現在こちらのUdemyの問題を解いています。
SnowPro Associate: Platform Certification – Practice Exams

Work with Snowflake Notebooks

私が問題に取り組んでいて弱いな・・・と感じたところ、それはNotebooksと非構造化データです。
今回は、Notebooksについて深掘りしていきたいと思います。
https://docs.snowflake.com/ja/user-guide/ui-snowsight/notebooks

Snowflake Notebooksとは

Snowflake Notebooksは、SnowflakeのWebインターフェースであるSnowsightに統合された、インタラクティブな開発環境です。これは、Jupyter Notebookのようなセルベースの構造を持ち、SQL、Python、Markdownを組み合わせて記述・実行できます。

このノートブックは、データアナリスト、データサイエンティスト、データエンジニアがSnowflake内で効率的に作業を進めるための強力なツールとして設計されています。

実際の画面

プロジェクト→ノートブックで開けます。

処理の間や次に挿入したい場合、このようにpython/SQL/Markdownが選べるようになっています。

Markdownにはテキストでコメントを残すようなこともできて、実際の処理がどういったものかを説明するのに有効活用できそうです。

Notebookランタイムについて

https://docs.snowflake.com/en/user-guide/ui-snowsight/notebooks#notebook-runtimes

新たにノートブックを作成する場合は、プロジェクト→ノートブックで開いた後に+ノートブックというボタンを押下します。

大事なのはここ!ランタイムがウェアハウスでの実行とコンテナでの実行を選べるところです。

ウェアハウスランタイムとは、Snowflake Notebooksでコードを実行するための実行環境の一つで、Snowflakeの仮想ウェアハウスを直接利用して処理を行うものです。
簡単に言うと、使い慣れたSQLや基本的なデータ分析を、追加のセットアップなしですぐに実行できる、手軽な実行環境です。

コンテナランタイムとは、Snowflake NotebooksにおいてSnowpark Container Services (SPCS) を基盤として、より柔軟でパワフルなコード実行を可能にする環境です。
これは、標準のウェアハウスランタイムでは対応できない、高度な要件に応えるための実行環境です。
コンテナランタイムでびっくりした機能が、これ。pip installが使えちゃうのですね!↓

任意のPythonパッケージ: pip install を使って、PyPIで公開されているライブラリや、
プライベートなライブラリを自由に追加できます。
これにより、scikit-learnやPyTorch、TensorFlowといった高度な機械学習ライブラリも
利用可能です。

Warehouseランタイムと Containerランタイムの違い

特徴 / ランタイム Warehouse Runtime Container Runtime
基盤技術 Snowflake 仮想ウェアハウス Snowpark Container Services (SPCS)
主な用途 - 探索的データ分析 (EDA)
- アドホックなSQL分析
- 基本的なSnowpark Python処理
- データの前処理
- 高度な機械学習モデル開発/トレーニング
- ディープラーニング
- カスタムPythonライブラリを要する分析
- GPUを必要とするワークロード
Pythonパッケージ プリインストールされたパッケージが主。柔軟性に限りがあります。 %pip install で任意のPythonパッケージをインストール可能 (PyPIなど)。高い柔軟性があります。
ハードウェア CPUのみ CPU または GPU を選択可能
セットアップ 既存の仮想ウェアハウスを利用するため、最も手軽です。 コンピューティングプール(CPU/GPU選択)の設定が必要です。
セッションの持続性 アイドルタイムアウトあり (デフォルト30分) アイドルタイムアウトあり。
セッション自体は最長7日間継続可能です。
パフォーマンス SQLとSnowparkはウェアハウスにプッシュダウンされ高速です。 同上。
加えて、GPU活用で計算集約型ワークロードが高速化します。
柔軟性 低〜中
コスト 仮想ウェアハウスの利用料に基づきます。 SPCSのコンピューティングプール利用料に基づきます。
メリット - 簡単に開始できる
- 既存のリソースを有効活用できる
- 日常的なデータ分析に十分対応可能
- 高度なAI/MLワークロードに対応
- カスタムライブラリを自由に利用できる
- GPUアクセラレーションを利用可能
デメリット - パッケージの自由度が低い
- GPU利用不可
- 高度なMLには不向き
- セットアップに一手間かかる
- コスト管理をより意識する必要があります

アクティブなDatabase Schema roleなどを見つけるためには

https://docs.snowflake.com/ja/user-guide/ui-snowsight/notebooks-sessions

Snowflake Notebooksで「アクティブなロールは何ですか?」という質問に対する答えを得たい場合、
それは現在の状態を「問い合わせる」行為です。
そのため、状態を変更するコマンドであるUSE ROLEではなく、
現在の状態を返す関数であるCURRENT_ROLE()を使用するのが
正しいアプローチとなります。

USE ROLEは「このロールを使用するように設定する」ものであり、
CURRENT_ROLE()は「現在使用されているロールは何かを確認する」もの、
と考えると分かりやすいでしょう。

なるほど、USE ROLEを使うときって確かに「前は違うロールを使っていたけど、このロールに変更するよ」っていうSQLコマンドであることに対して、Notebookでは
「現在使っているロールはこれだよ」っていうことを呼び出すだけのもの、という理解をしました。

自動保存

Notebooksは3秒ごとに自動保存します
https://docs.snowflake.com/ja/user-guide/ui-snowsight/notebooks-save-share

まとめ

やはりブログ化することで、Notebookの深掘りができました。
もう1回解いてみてNotebooksだけでも満点取れるように頑張ります!

Discussion