使用 Python 存储过程读取文件¶
使用 Snowpark snowflake.snowpark.files
模块中的 SnowflakeFile
类,Python 处理程序可以从以下 Snowflake 暂存区之一动态读取文件:
已命名的内部暂存区。
指定表的内部暂存区。
当前用户的内部暂存区。
Snowflake 支持使用 SnowflakeFile
读取存储过程和用户定义函数的文件。有关在处理程序代码中读取文件的更多信息以及更多示例,请参阅 使用 Python UDF 处理程序读取文件。
示例¶
此示例演示如何创建和调用使用 SnowflakeFile
类读取文件的 所有者权限存储过程。
使用内联处理程序程序创建存储过程,通过传递 rb
作为 mode
实参来将输入模式指定为二进制:
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'));