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

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

ノートブックセルの基本

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

新しいセルを作成する

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

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

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

セルを移動する

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

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

  2. (オプション2)垂直省略記号 ワークシートのその他のアクション (アクション)メニューを選択します。次に、適切なアクションを選択します。

注釈

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

セルを削除する

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

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

  2. Delete を選択します。

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

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

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

Snowflake Notebooks でセルを実行する

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箇所に表示されます。

セルステータスの色:

  • 青い点:セルは修正されましたが、まだ動作していません。

  • 赤:現在のセッションでセルが実行され、エラーが発生しました。

  • 緑:セルは現在のセッションでエラーなしに実行されました。

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

  • 灰色:セルは前のセッションで実行され、表示される結果は前のセッションのものです。前回のセッションのセル結果は7日間保存されます。インタラクティブセッションとは、スケジュールや EXECUTE NOTEBOOK SQL コマンドで実行されたものではなく、 Snowsight でユーザーがインタラクティブにノートブックを実行することを意味します。

  • グレーの点滅: Run All を選択すると、セルは実行待ちの状態になります。

注釈

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

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

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

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

実行中のセルを停止

現在実行中のコード・セルの実行を停止するには、セルの右上にある Stop を選択します。Notebooksページの右上にある Stop を選択することも可能です。細胞が動いている間、 Run allStop になります。

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

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() ステートメントからの出力など、コンソールに書き込まれるすべての結果。

  • 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

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のセルで:

Python変数を値として使用

c = "USA"
Copy

変数 c の値を、 cell2 という名前の SQL のセルでリファレンスするには、変数 をシングルクォーテーションで囲んで、確実に値として扱えるようにします。

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

Pythonの変数を識別子として使う場合

Python 変数が列やテーブル名のような SQL 識別子を表す場合:

column_name = "COUNTRY"
Copy

Python の変数が列やテーブル名 (column_name = "COUNTRY") のような SQL 識別子を表す場合、その変数を引用符なしで直接リファレンスすることができます:

SELECT * FROM my_table WHERE {{column_name}} = 'USA'
Copy

値として使用される変数(引用符付き)と識別子として使用される変数(引用符なし)を必ず区別してください。

注意: 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);
    
    Copy