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

调用存储过程:

CALL calc_phash(build_scoped_file_url(@my_files, 'my_image.jpg'));
Copy
语言: 中文