Reading files with a Python stored procedure (original) (raw)

DeveloperFunctions and proceduresStored proceduresPythonFile reading

Using the SnowflakeFile class in the Snowpark snowflake.snowpark.files module, your Python handler can dynamically read a file from one of the following Snowflake stages:

Snowflake supports reading files with SnowflakeFile for both stored procedures and user-defined functions. For more information about reading files in your handler code, as well as more examples, refer to Reading a File with a Python UDF Handler.

Example

This example demonstrates how to create and call an owner’s rights stored procedurethat reads a file using the SnowflakeFile class.

Create the stored procedure with an in-line handler, specifying the input mode as binary by passing rb for the mode argument:

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 fromPILimportImageimportimagehashfromsnowflake.snowpark.filesimportSnowflakeFiledefrun(ignoredsession,filepath):withSnowflakeFile.open(filepath,′rb′)asf:returnimagehash.averagehash(Image.open(f))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))fromPILimportImageimportimagehashfromsnowflake.snowpark.filesimportSnowflakeFiledefrun(ignoredsession,filepath):withSnowflakeFile.open(filepath,rb)asf:returnimagehash.averagehash(Image.open(f));

Call the stored procedure:

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