Snowflake Notebooks でコードを開発し、実行します。

このトピックでは、 Snowflake Notebooks でコードを書いて実行する方法について説明します。

ノートブックセルの基本

このセクションでは基本的なセル操作について紹介します。 ノートブックを作成 すると、3つのセル例が表示されます。これらのセルを変更したり、新しいセルを追加することができます。

新しいセルを作成する

Snowflake Notebooks は3種類のセルをサポートしています: SQL、Python、Markdown。新しいセルを作成するには、既存のセルにカーソルを合わせるか、ノートブックの一番下までスクロールして、追加したいセルタイプのボタンのいずれかを選択します。

ノートブックの下部に新しいセルボタンを追加します。

セルを作成した後でも、2つの方法のいずれかを使って、セルの言語を随時変更することができます。

セルを移動する

セルを移動するには、マウスを使ってセルをドラッグ・アンド・ドロップするか、アクションメニューを使います。

  1. (オプション1)移動する既存のセルにマウスを合わせます。マウスでドラッグ&ドロップアイコンを選択し、セルを新しい場所に移動します。

    ドラッグ&ドロップでセルを移動します。
  2. (オプション2)垂直省略記号 ワークシートのその他のアクション (アクション)メニューを選択します。次に、適切なアクションを選択します。

    セルを移動するためのアクションメニュー。

注釈

セル間でフォーカスを移動させるには、Up、:kbd:`Down`を使用します。

セルを削除する

セルを削除するには、ノートブックで次の手順を実行します。

  1. 垂直省略記号 ワークシートのその他のアクション (その他のアクション)メニューを選択します。

  2. Delete を選択します。

  3. Delete をもう一度選択して確定します。

キーボードショートカット を使ってセルを削除することもできます。

PythonとSQLセルを使用する際の注意点については、 ノートブックを実行する際の注意点 をご参照ください。

Snowflake Notebooks でPythonと SQL セルをを実行する

Snowflake Notebooks でPythonと SQL セルを実行するには、次を行うことができます。

  • シングルセルを実行: コードの更新を頻繁に行う場合は、このオプションを選択してください。

    • Macキーボードで:kbd:CMD + Return を押すか、またはWindowsキーボードで:kbd:CTRL + Enter を押します。

    • このセルのみを実行 または Run this cell only を選択します。

  • ノートブック内のすべてのセルを連続した順序で実行: ノートブックを提示または共有する前にこのオプションを選択すると、受信者に最新の情報が表示されます。

    • Macキーボードで:kbd:CMD + Shift + Return を押すか、またはWindowsキーボードで:kbd:CTRL + Shift + Enter を押します。

    • Run all を選択します。

  • セルを実行して次のセルに進む: セルを実行して次のセルに進むにはこのオプションを選んでください。

    • Macキーボードで:kbd:Shift + Return を押すか、またはWindowsキーボードで:kbd:Shift + Enter を押します。

    • セルの垂直省略記号(その他のアクション)を選択し、 Run cell and advance を選択します。

  • 上記すべてを実行:以前のセルの結果を参照するセルを実行する場合、このオプションを選択します。

    • セルの垂直省略記号(その他のアクション)を選択し、 Run all above を選択します。

  • 以下すべて実行:後続のセルに依存するセルを実行する場合、このオプションを選択します。このオプションは、現在のセルとそれに続くすべてのセルを実行します。

    • セルの垂直省略記号(その他のアクション)を選択し、 Run all below を選択します。

あるセルが動作しているとき、他の実行要求はキューに入れられ、アクティブに動作しているセルが終了すると実行されます。

セルステータスを検査する

セルが表示する色によって、セルの実行状態が示されます。このステータスの色はセルの左の壁と右のセルナビゲーションマップ の2箇所に表示されます。

セルステータスの色:

  • 青い点 - セルが変更されたが、まだ実行されていないことを示します。

  • 赤 - エラーが発生しました。

  • 緑 - 実行に成功しました。

  • 動いている緑 - 現在セルが実行されています。

  • グレーの点滅 - セルは実行待ちです。このステータスは、複数のセルがトリガーされたときに発生します。

注釈

マークダウンのセルにはステータスが表示されません。

セルの実行が終わると、実行にかかった時間がセルの上部に表示されます。このテキストを選択すると、実行詳細ウィンドウが表示されます。実行開始時刻、終了時刻、総経過時間など、実行の詳細を表示することができます。

SQLセルには、クエリの実行に使用されたウェアハウス、返された行、クエリIDページへのハイパーリンクなどの追加情報が含まれます。

セル実行詳細ウィンドウ。

実行中のセルを停止

現在実行中のコードセルの実行を停止するには、セルの右上にある停止ボタンを選択します。

これにより、現在実行中のセルと、それ以降に実行がスケジュー ルされているすべてのセルの実行が停止されます。

Markdownでテキストをフォーマット

ノートブックにMarkdownを含めるには、Markdownセルを追加してください:

  1. キーボードショートカット を使用し、 Markdown を選択するか、 + Markdown を選択します。

  2. Edit markdown 鉛筆アイコンを選択するか、セルをダブルクリックして、Markdownを書き始めます。

有効なMarkdownを入力して、テキストセルをフォーマットすることができます。入力すると、Markdown構文の下にフォーマットされたテキストが表示されます。

Markdownセルのスクリーンショットには、#で示されたH1ヘッダーと、ヘッダー「例Markdownセル」の後に「これはSnowflake NotebookのMarkdownセルの例です」の本文テキストが続くMarkdownテキストが表示されています。生Markdownコンテンツの下に、レンダリングされたMarkdownが異なるフォントで表示されます。

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

Markdownセルのスクリーンショットには、レンダリングされたMarkdownのみが表示されています。つまり、ヘッダー「例Markdownセル」と「これはSnowflake NotebookのMarkdownセルの例です」の本文テキストです。

注釈

マークダウンのセルは現在、HTMLのレンダリングをサポートしていません。

Markdownの基本

このセクションでは、Markdownを使い始める上での基本的な構文について説明します。

ヘッダー

ヘディングレベル

Markdown構文

最上位

# Top-level Header
Copy
Markdownのヘッダー1

第2レベル

## 2nd-level Header
Copy
Markdownのヘッダー1

第3レベル

### 3rd-level Header
Copy
Markdownのヘッダー1

インラインテキストの書式設定

テキスト形式

Markdown構文

斜体

*italicized text*
Copy
Markdownの斜体テキスト

太字

**bolded text**
Copy
Markdownの太字テキスト

リンク

[Link text](url)
Copy
Markdownのリンク

リスト

リストタイプ

Markdown構文

順序付きリスト

1. first item
2. second item
  1. Nested first
  2. Nested second
Copy
Markdownの順序付きリスト

順序なしリスト

- first item
- second item
  - Nested first
  - Nested second
Copy
Markdownの順序なしリスト

コードの書式設定

言語

Markdown構文

Python

```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
Copy
MarkdownのPythonコードスニペット

SQL

```sql
SELECT * FROM MYTABLE
```
Copy
Markdownの SQL コードスニペット

画像の埋め込み

ファイルタイプ

Markdown構文

画像

![<alt_text>](<path_to_image>)
Copy
Markdownの埋め込み画像

これらのMarkdownの例を示すノートブックについては、ビジュアルデータストーリーノートブックの Markdownセル セクションをご参照ください。

セル出力の理解

Pythonセルを実行すると、そのセルからの次のような出力が結果に表示されます。

  • print()、ログ、エラー、警告など、コンソールに書き込まれるすべての結果。

  • Streamlitのインタラクティブテーブルディスプレイst.dataframe() でデータフレームが自動的に印刷されます。

    • サポートされているデータフレーム表示タイプには、pandas DataFrame、Snowpark DataFrames、Snowpark Tablesがあります。

    • Snowparkの場合、印刷されたデータフレームは、 .show() を呼び出すことなく、積極的に評価されます。非対話モードでノートブックを実行する場合など、データフレームを積極的に評価したくない場合は、SnowflakeはSnowparkコードの全体的な実行時間を短縮するために、データフレームのprint文を削除することをお勧めします。

  • 可視化は出力でレンダリングされます。 Snowflake Notebooks でのデータの可視化に関する詳細については、 Snowflake Notebooks のデータを可視化する をご参照ください。

さらに、SQLクエリの結果に Python でアクセスしたり、その逆も可能です。 Snowflake Notebooks の参照セルと変数 をご参照ください。

Snowflake Notebooks の参照セルと変数

ノートブックのセルで前のセルの結果を参照できます。たとえば、 SQL セルの結果やPython変数の値を参照したい場合は、以下のテーブルをご参照ください。

注釈

参照のセル名は大文字と小文字を区別し、参照先のセル名と正確に一致する必要があります。

PythonのセルでSQLの出力を参照する:.

参照セルタイプ

現在のセルタイプ

参照構文

SQL

Python

cell1

SQL の結果テーブルをSnowpark DataFrame に変換します。

cell1 という SQL のセルに次のようなものがあるとします。

SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Copy

セルを参照して、SQLの結果にアクセスできます。

snowpark_df = cell1.to_df()
Copy

結果をpandas DataFrame データフレームに変換します。

my_df = cell1.to_pandas()
Copy

SQLコードの変数を参照します。

重要

SQL コードでは、 string 型のPython変数のみを参照できます。Snowpark DataFrame やpandas DataFrame などのPythonネイティブ DataFrame 形式は参照できません。

参照セルタイプ

現在のセルタイプ

参照構文

SQL

SQL

{{cell2}}

例えば、 cell1 という SQL のセルで、 cell2 のセル結果を参照します。

SELECT * FROM {{cell2}} where PRICE > 500
Copy

Python

SQL

{{variable}}

例えば、 cell1 というPythonのセルで:

c = "USA"
Copy

変数を参照することで、 cell2 という名前の SQL セルで変数 c の値を参照することができます。

SELECT * FROM my_table WHERE COUNTRY = {{c}}
Copy

ノートブックを実行する際の注意点

  • ノートブックは発信者権限を使用して実行されます。その他の留意点については、 ノートブックのセッションコンテキストの変更 をご参照ください。

  • Pythonライブラリをインポートしてノートブックで使うことができます。詳細については、 ノートブックで使用するPythonパッケージをインポートする をご参照ください。

  • SQLセルでオブジェクトを参照する場合は、指定したデータベースまたはスキーマのオブジェクト名を参照するのでない限り、完全修飾オブジェクト名を使用する必要があります。 ノートブックのセッションコンテキストの変更 をご参照ください。

  • ノートブックの下書きは3秒ごとに保存されます。

  • 非アクティブな状態(コード編集やクエリ実行がない)が1時間続くと、ノートブックカーネルはシャットダウンします。Snowflakeでは、ウェアハウスでパラメーターを確認することも推奨しています。 STATEMENT_TIMEOUT_IN_SECONDS または STATEMENT_QUEUED_TIMEOUT_IN_SECONDS を小さな値に設定すると、ノートブックがシャットダウンしたり、起動に失敗したりすることがあります。

  • ノートブックのバージョンを管理するためにGitの統合を使用することができます。

  • ノートブックセルの結果は、セッションをまたいでキャッシュされます。ノートブックを開き直すと、UIを使って前回ノートブックを実行したときの過去の結果が表示されます。キャッシュされた結果は、ノートブックを実行した同じユーザーのみに表示されます。

  • 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);
    
    Copy

次のステップ