Leitura de arquivos com um procedimento armazenado Python¶
Usando a classe SnowflakeFile
no módulo do Snowpark snowflake.snowpark.files
, seu manipulador Python pode ler dinamicamente um arquivo de um dos seguintes estágios do Snowflake:
Um estágio interno nomeado.
Um estágio interno de uma tabela especificada.
O estágio interno do usuário atual.
O Snowflake oferece suporte à leitura de arquivos com SnowflakeFile
para procedimentos armazenados e funções definidas pelo usuário. Para obter mais informações sobre a leitura de arquivos no código do manipulador, bem como mais exemplos, consulte Como ler um arquivo com um manipulador de UDF Python.
Exemplo¶
Este exemplo demonstra como criar e chamar um procedimento armazenado de direitos do proprietário que lê um arquivo usando a classe SnowflakeFile
.
Crie o procedimento armazenado com um manipulador em linha, especificando o modo de entrada como binário passando rb
para o argumento 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))
$$;
Chame o procedimento armazenado:
CALL calc_phash(build_scoped_file_url(@my_files, 'my_image.jpg'));