Python ストアドプロシージャによるファイルの読み込み¶
Snowpark snowflake.snowpark.files
モジュールの SnowflakeFile
クラスを使用すると、Pythonハンドラーは以下のSnowflakeステージのいずれかから動的にファイルを読み込むことができます。
名前付き内部ステージ。
指定されたテーブルの内部ステージ。
現在のユーザーの内部ステージ。
Snowflakeは、ストアドプロシージャとユーザー定義関数の両方で、 SnowflakeFile
を使用したファイルの読み取りをサポートしています。ハンドラーコードでのファイルの読み取りに関する詳細とその他の例については、 Python UDF ハンドラーを使用したファイルの読み取り をご参照ください。
例¶
この例では、 SnowflakeFile
クラスを使用して、ファイルを読み取る 所有権ストアドプロシージャ を作成し、呼び出す方法を示しています。
ストアドプロシージャをインラインハンドラーで作成し、 mode
の引数に rb
を渡して入力モードをバイナリに指定します。
CREATE OR REPLACE PROCEDURE calc_phash(file_path string)
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = '3.9'
PACKAGES = ('snowflake-snowpark-python','imagehash','pillow')
HANDLER = 'run'
AS
$$
from PIL import Image
import imagehash
from snowflake.snowpark.files import SnowflakeFile
def run(ignored_session, file_path):
with SnowflakeFile.open(file_path, 'rb') as f:
return imagehash.average_hash(Image.open(f))
$$;
ストアドプロシージャを呼び出します。
CALL calc_phash(build_scoped_file_url(@my_files, 'my_image.jpg'));