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

ストアドプロシージャを呼び出します。

CALL calc_phash(build_scoped_file_url(@my_files, 'my_image.jpg'));
Copy