ノートブックでファイルを操作¶
このトピックでは、 Snowflake Notebooks からファイルをアップロードしてアクセスする方法について説明します。
ノートブック環境のファイル¶
新しいノートブックを作成すると、メインのノートブックファイルが作成されます。デフォルトでは、ノートブックファイルはノートブックと同じ名前が割り当てられます。
ファイルはノートブック環境を表す内部ステージに保存され、セッション間で持続します。ノートブックの左側にある Files タブで表示できます。ファイルの内容のプレビューを表示するには、ファイル名を選択します。
ノートブック環境の仮ファイルシステム¶
ノートブックには、アクティブなセッション中に利用できる仮のファイルシステムがあります。セッション中に作成されたファイルは、この仮ステージに保存されます。仮ステージにあるファイルは、現在のNotebooksセッションを終了すると可用性はなくなります。
次のコードでは、 myfile.txt というファイルを作成し、そこにテキストを書き込んでいます。
このファイルは、作成されたセッション中にアクセスすることができます。
listdir() メソッドを使って、仮ステージのファイルをリストアップします。
現在のセッションを切断し、再接続してください。もう一度 listdir() メソッドを試行しても、 myfile.txt ファイルは表示されません。
Notebooksセッションをまたいだファイルの永続化¶
Notebookのセッションをまたいでファイルを永続化します。
Snowflakeステージにファイルを保管する¶
セッション間でファイルを持続させ、異なるノートブック間でファイルをリファレンスしたい場合は、Snowflakeステージを使用してファイルを保存します。ステージ上にローカルコンピュータからファイルをアップロードし、Snowpark API からファイル操作を使ってノートブックからアクセスすることができます。
例¶
この例では、ステージを作成し、ノートブックからステージングされたファイルを保存および取得する方法を示します。
permanent_stage というステージングを作成するには、 SQL のセルで以下のコードを実行します。
次に、 myfile.txt というファイルを作成し、その中にテキストを入れるために、Pythonのセルで以下のコードを実行します。
この時点で、 myfile.txt はノートブックの仮ファイルシステムに保存されていることに注意してください。これをステージングに移すには、Snowpark API を使って myfile.txt を permanent_stage にアップロードします。
セッションを切断して再接続すると、 SQL のセルで以下のコードを実行して、ファイルがまだ表示されているかどうかを確認できます。
Snowsight を使ってファイルを Notebooks にアップロードします。¶
ローカルコンピュータからファイルをアップロードして、Snowflakeノートブックで使用することができます。
Snowsight にサインインします。
ナビゲーションメニューで Projects » Notebooks を選択します。
Files タブのデータベースオブジェクトエクスプローラーの横で、
アイコンを選択し、アップロードするファイルを選択します。ファイルを参照して選択するか、ダイアログにドラッグ&ドロップします。
Upload を選択してファイルをアップロードします。
注釈
ノートブックで Python パッケージとして使用するためにファイルをアップロードする場合、Warehouse Runtime 上で実行する場合は .py と .zip のファイルのみがサポートされていることを考慮してください。Container Runtimeでは、 .whl (wheel)ファイルもサポートされています。パッケージを .zip ファイルとしてインポートする場合、Python パッケージであることを示す __init__.py ファイルがルートにあることを確認してください。
アップロードされたファイルはノートブックの内部ステージに保存され、セッション間で永続化されます。アップロードされたファイルは、ノートブックファイルからローカルパスを使って参照できます。Notebooks内のファイルの参照 をご参照ください。
注釈
内部ステージのみ対応。外部ステージ(Amazon S3、Google Cloud Storage、Azure Blob Storageなど)はサポートされていません。
他の編集環境を使用してファイルをアップロードまたはダウンロード¶
In addition to using the file browser in Snowsight, you can also work with files in the Notebooks stage using a local Snowpark Python session, Snowflake CLI, or SnowSQL.
ローカルSnowpark Pythonセッション¶
SnowparkPythonの session.file.put と session.file.get メソッドを使用して、ローカルコンピュータからノートブックステージにファイルをアップロードしたりダウンロードしたりすることができます。そのためには、ローカルの編集環境からSnowparkセッションを開始する必要があります (Snowsight)。例:
注釈
この方法は SnowSQL CLI からは使えません。SnowparkセッションがアクティブなPython環境からメソッドを実行する必要があります。
SnowSQL コマンド¶
SnowSQL コマンドを直接使って、Notebooksステージからファイルをアップロードまたはダウンロードすることもできます。
これらのコマンドを実行する前に、 SnowSQL セッションで適切なデータベース、スキーマ、ウェアハウスがセットされていることを確認してください。
Gitからのファイルと同期する¶
ノートブックがGitに接続されている場合、ノートブックと同じGitフォルダにあるファイルはすべて Files タブに表示されます。
Gitでのファイルの扱い方については、 ノートブックと Git リポジトリの同期 をご参照ください。
Notebooks内のファイルの参照¶
ノートブック環境の各ファイルには、ステージパスとローカルパスがあります。これらのパスを使って、ノートブック内のファイルを参照することができます。
Python でのローカルパスの参照¶
一般的に、Pythonライブラリはファイルへのリファレンスとしてファイルへのローカルパスを使用します。例えば、次のコードは、このコードが実行されているノートブックと同じディレクトリにアップロードされた data.csv ファイルにアクセスします。
SQL でステージパスを参照します。¶
SQLで、Snowflakeはステージパスに基づいてファイルを参照します。ノートブックのファイルのステージパスは、以下のフォーマットに基づいています。
Copy path メニューを使って、ノートブックステージのファイルに関連するステージパスを検索します。
Snowsight にサインインします。
ナビゲーションメニューで Projects » Notebooks を選択します。
Files タブのデータベースオブジェクトエクスプローラーの横で、パスを取得したいファイルの横にある
アイコンを選択します。Copy path を選択します。ファイルのパスをクリップボードにコピーします。
そして、次のSQLステートメントを使って、ステージングされたファイルの詳細をリストアップすることができます。
制限と考慮事項¶
ノートブックセッションを開始する前にファイルをロードしてください。セッション開始後にファイルをロードした場合、ファイルにアクセスするにはセッションを再起動する必要があります。
アップロードするファイルの種類に制限はありません。
1ファイルあたりのサイズ制限は250 MB以下です。
ノートブックのローカルパスに書き込まれたファイルは、 Files タブには表示されません。しかし、ノートブックのコードでそのファイルを使うことはできます。
例えば、
data.jsonというファイルを作成した場合、 Files UI に表示されなくても、以下のコードのようにアクセスすることができます。メインのノートブックファイルではない別の
.ipynbファイルを開くことはサポートされていません。