Lecture de fichiers avec une procédure stockée Python¶
À l’aide de la classe SnowflakeFile
dans le module Snowpark snowflake.snowpark.files
, votre gestionnaire (handler) Python peut lire dynamiquement un fichier à partir de l’une des zones de préparation suivantes de Snowflake :
Une zone de préparation interne nommée.
La zone de préparation interne d’une table spécifiée.
La zone de préparation interne de l’utilisateur actuel.
Snowflake prend en charge la lecture de fichiers avec SnowflakeFile
tant pour les procédures stockées que pour les fonctions définies par l’utilisateur. Pour plus d’informations sur la lecture de fichiers dans le code de votre gestionnaire, ainsi que d’autres exemples, reportez-vous à Lecture d’un fichier avec un gestionnaire d’UDF Python.
Exemple¶
Cet exemple montre comment créer et appeler une procédure stockée sur les droits du propriétaire qui lit un fichier à l’aide de la classe SnowflakeFile
.
Créez la procédure stockée avec un gestionnaire en ligne, en spécifiant le mode d’entrée comme étant binaire en transmettant rb
pour l’argument 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))
$$;
Appelez la procédure stockée :
CALL calc_phash(build_scoped_file_url(@my_files, 'my_image.jpg'));