Snowflake Notebooks でコードを開発し、実行します。¶
このトピックでは、 Snowflake Notebooks で SQL、Python、Markdown のコードを書いて実行する方法について説明します。
ノートブックセルの基本¶
このセクションでは基本的なセル操作について紹介します。 ノートブックを作成 すると、3つのセル例が表示されます。これらのセルを変更したり、新しいセルを追加することができます。
新しいセルを作成する¶
Snowflake Notebooks は3種類のセルをサポートしています: SQL、Python、Markdown。新しいセルを作成するには、既存のセルにカーソルを合わせるか、ノートブックの一番下までスクロールして、追加したいセルタイプのボタンのいずれかを選択します。
セルを作成した後でも、2つの方法のいずれかを使って、セルの言語を随時変更することができます。
言語ドロップダウンメニューを選択し、別の言語を選択します。
セルを移動する¶
セルを移動するには、マウスを使ってドラッグ&ドロップするか、アクションメニューを使います。
注釈
セル間でフォーカスを移動させるには、Up、:kbd:`Down`を使用します。
セルを削除する¶
セルを削除するには、ノートブックで次の手順を実行します。
キーボードショートカット を使ってセルを削除することもできます。
PythonとSQLセルを使用する際の注意点については、 ノートブックを実行する際の注意点 をご参照ください。
Snowflake Notebooks でセルを実行する¶
Snowflake Notebooks でPythonと SQL セルを実行するには、次を行うことができます。
シングルセルを実行: コードの更新を頻繁に行う場合は、このオプションを選択してください。
ノートブック内のすべてのセルを連続した順序で実行: ノートブックを提示または共有する前にこのオプションを選択すると、受信者に最新の情報が表示されます。
Macキーボードで:kbd:
CMD
+ Shift + Return を押すか、またはWindowsキーボードで:kbd:CTRL
+ Shift + Enter を押します。Run all を選択します。
セルを実行して次のセルに進む: セルを実行して次のセルに進むにはこのオプションを選んでください。
上記すべてを実行:以前のセルの結果を参照するセルを実行する場合、このオプションを選択します。
以下すべて実行:後続のセルに依存するセルを実行する場合、このオプションを選択します。このオプションは、現在のセルとそれに続くすべてのセルを実行します。
あるセルが動作しているとき、他の実行要求はキューに入れられ、アクティブに動作しているセルが終了すると実行されます。
セルステータスを検査する¶
セルが表示する色によって、セルの実行状態が示されます。このステータスの色はセルの左の壁と右のセルナビゲーションマップ の2箇所に表示されます。
セルステータスの色:
青い点:セルは修正されましたが、まだ動作していません。
赤:現在のセッションでセルが実行され、エラーが発生しました。
緑:セルは現在のセッションでエラーなしに実行されました。
動いている緑 - 現在セルが実行されています。
灰色:セルは前のセッションで実行され、表示される結果は前のセッションのものです。前回のセッションのセル結果は7日間保存されます。インタラクティブセッションとは、スケジュールや EXECUTE NOTEBOOK SQL コマンドで実行されたものではなく、 Snowsight でユーザーがインタラクティブにノートブックを実行することを意味します。
グレーの点滅: Run All を選択すると、セルは実行待ちの状態になります。
注釈
マークダウンのセルにはステータスが表示されません。
セルの実行が終わると、実行にかかった時間がセルの上部に表示されます。このテキストを選択すると、開始時刻、終了時刻、総経過時間などのランの詳細が表示されます。
SQLセルには、クエリの実行に使用されたウェアハウス、返された行、クエリIDページへのハイパーリンクなどの追加情報が含まれます。
実行中のセルを停止¶
現在実行中のコード・セルの実行を停止するには、セルの右上にある Stop を選択します。Notebooksページの右上にある Stop を選択することも可能です。細胞が動いている間、 Run all は Stop になります。
これにより、現在実行中のセルと、それ以降に実行がスケジュールされてい るすべてのセルの実行が停止されます。
Markdownでテキストをフォーマット¶
ノートブックにMarkdownを含めるには、Markdownセルを追加してください:
キーボードショートカット を使用し、 Markdown を選択するか、 + Markdown を選択します。
Edit markdown 鉛筆アイコンを選択するか、セルをダブルクリックして、Markdownを書き始めます。
有効なMarkdownを入力して、テキストセルをフォーマットすることができます。入力すると、Markdown構文の下にフォーマットされたテキストが表示されます。

書式付きテキストのみを表示するには、 Done editing チェックマークアイコンを選択します。

注釈
マークダウンのセルは現在、HTMLのレンダリングをサポートしていません。
Markdownの基本¶
このセクションでは、Markdownを使い始める上での基本的な構文について説明します。
ヘッダー
ヘディングレベル |
Markdown構文 |
例 |
---|---|---|
最上位 |
# Top-level Header
|
![]() |
第2レベル |
## 2nd-level Header
|
![]() |
第3レベル |
### 3rd-level Header
|
![]() |
インラインテキストの書式設定
テキスト形式 |
Markdown構文 |
例 |
---|---|---|
斜体 |
*italicized text*
|
![]() |
太字 |
**bolded text**
|
![]() |
リンク |
[Link text](url)
|
![]() |
リスト
リストタイプ |
Markdown構文 |
例 |
---|---|---|
順序付きリスト |
1. first item
2. second item
1. Nested first
2. Nested second
|
![]() |
順序なしリスト |
- first item
- second item
- Nested first
- Nested second
|
![]() |
コードの書式設定
言語 |
Markdown構文 |
例 |
---|---|---|
Python |
```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
|
![]() |
SQL |
```sql
SELECT * FROM MYTABLE
```
|
![]() |
画像の埋め込み
ファイルタイプ |
Markdown構文 |
例 |
---|---|---|
画像 |

|
![]() |
これらのMarkdownの例を示すノートブックについては、ビジュアルデータストーリーノートブックの Markdownセル セクションをご参照ください。
セル出力の理解¶
Python セルを実行すると、ノートブックにはセルからの出力が以下のタイプで結果に表示されます。
ログ、エラー、警告、print() ステートメントからの出力など、コンソールに書き込まれるすべての結果。
DataFrames は Streamlitのインタラクティブ・テーブル・ディスプレイ、
st.dataframe()
で自動的に印刷されます。サポートされている DataFrame 表示タイプには、pandas DataFrame、Snowpark DataFrames、Snowpark Tables があります。
Snowparkの場合、印刷された DataFrames は、
.show()
コマンドを実行することなく、熱心に評価されます。非インタラクティブモードでノートブックを実行する場合など、 DataFrame を熱心に評価したくない場合、Snowflake では、 DataFrame print ステートメントを削除して、Snowpark コード全体のランタイムを高速化することを推奨しています。
可視化は出力でレンダリングされます。データの可視化について詳しくは、 Snowflake Notebooks のデータを可視化する をご覧ください。
さらに、SQLクエリの結果に Python でアクセスしたり、その逆も可能です。 Snowflake Notebooks の参照セルと変数 をご参照ください。
セル出力制限¶
10,000行または DataFrame 出力の8 MB のいずれか低い方のみがセル結果として表示されます。しかし、 DataFrame はすべて、ノートブックセッションで使用可能です。例えば、 DataFrame 全体がレンダリングされなくても、データ変換タスクを実行することができます。
各セルにつき、20 MB の出力のみが許可されています。セル出力のサイズが20 MB を超えると、出力は落とされます。そのような場合は、内容を複数のセルに分割することを検討してください。
Snowflake Notebooks の参照セルと変数¶
ノートブックのセルで前のセルの結果を参照できます。たとえば、 SQL セルの結果やPython変数の値を参照したい場合は、以下のテーブルをご参照ください。
注釈
参照のセル名は大文字と小文字を区別し、参照先のセル名と正確に一致する必要があります。
PythonのセルでSQLの出力を参照する:.
参照セルタイプ |
現在のセルタイプ |
参照構文 |
例 |
---|---|---|---|
SQL |
Python |
|
SQL の結果テーブルをSnowpark DataFrame に変換します。
SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
セルを参照して、SQLの結果にアクセスできます。 snowpark_df = cell1.to_df()
結果をpandas DataFrame データフレームに変換します。 my_df = cell1.to_pandas()
|
SQLコードの変数を参照します。
重要
SQL コードでは、 string
型のPython変数のみを参照できます。Snowpark DataFrame やpandas DataFrame などのPythonネイティブ DataFrame 形式は参照できません。
参照セルタイプ |
現在のセルタイプ |
参照構文 |
例 |
---|---|---|---|
SQL |
SQL |
|
例えば、 SELECT * FROM {{cell2}} where PRICE > 500
|
Python |
SQL |
|
例えば、 Python変数を値として使用 c = "USA"
変数 SELECT * FROM my_table WHERE COUNTRY = '{{c}}'
Pythonの変数を識別子として使う場合 Python 変数が列やテーブル名のような SQL 識別子を表す場合: column_name = "COUNTRY"
Python の変数が列やテーブル名 ( SELECT * FROM my_table WHERE {{column_name}} = 'USA'
値として使用される変数(引用符付き)と識別子として使用される変数(引用符なし)を必ず区別してください。 注意: Python DataFrames の参照はサポートされていません。 |
ノートブックを実行する際の注意点¶
ノートブックは発信者権限を使用して実行されます。その他の留意点については、 ノートブックのセッションコンテキストの変更 をご参照ください。
Pythonライブラリをインポートしてノートブックで使うことができます。詳細については、 ノートブックで使用するPythonパッケージをインポートする をご参照ください。
SQLセルでオブジェクトを参照する場合は、指定したデータベースまたはスキーマのオブジェクト名を参照するのでない限り、完全修飾オブジェクト名を使用する必要があります。 ノートブックのセッションコンテキストの変更 をご参照ください。
ノートブックの下書きは3秒ごとに保存されます。
ノートブックのバージョンを管理するためにGitの統合を使用することができます。
アイドルタイムアウト設定を構成し、設定に達するとノートブックセッションを自動的にシャットダウンすることができます。詳細については、 アイドルタイムと再接続 をご参照ください。
Notebooksのセル結果は、Notebooksを実行したユーザーにのみ表示され、セッションをまたいでキャッシュされます。ノートブックを開き直すと、 Snowsight を使ってユーザーが最後にノートブックを実行したときの過去の結果が表示されます。
BEGIN ... END (Snowflakeスクリプト) は、SQL セルでサポートされていません。代わりに、Pythonのセルで Session.sql().collect() メソッドを使用してスクリプトブロックを実行します。SQL クエリを即座に実行するために、
collect
の呼び出しでsql
呼び出しをチェーンします。次のコードは
session.sql().collect()
メソッドを使用してSnowflakeスクリプトブロックを実行します。from snowflake.snowpark.context import get_active_session session = get_active_session() code_to_run = """ BEGIN CALL TRANSACTION_ANOMALY_MODEL!DETECT_ANOMALIES( INPUT_DATA => SYSTEM$REFERENCE('TABLE', 'ANOMALY_INFERENCE'), TIMESTAMP_COLNAME =>'DATE', TARGET_COLNAME => 'TRANSACTION_AMOUNT', CONFIG_OBJECT => {'prediction_interval': 0.95} ); LET x := SQLID; CREATE TABLE ANOMALY_PREDICTIONS AS SELECT * FROM TABLE(RESULT_SCAN(:x)); END; """ data = session.sql(code_to_run).collect(block=True);