Catégories :

Nouvelles fonctions

BUILD_STAGE_FILE_URL

Génère une URL de fichier hébergée par Snowflake vers un fichier en zone de préparation en utilisant le nom de la zone de préparation et le chemin de fichier relatif comme entrées. Une URL de fichier permet un accès prolongé à un fichier spécifié. C’est-à-dire que l’URL de fichier n’expire pas.

Appelez cette fonction SQL dans une requête, une fonction définie par l’utilisateur (UDF) ou une procédure stockée.

Accédez aux fichiers d’une zone de préparation en envoyant l’URL de fichier dans une requête à l’API REST pour la prise en charge du fichier. Lorsque les utilisateurs envoient une URL de fichier à l’API REST pour accéder aux fichiers, Snowflake effectue les actions suivantes :

  1. Authentifier l’utilisateur.

  2. Vérifiez que le rôle dispose de privilèges suffisants sur la zone de préparation qui contient le fichier.

  3. Rediriger l’utilisateur vers le fichier en zone de préparation dans le service de stockage dans le Cloud.

Syntaxe

BUILD_STAGE_FILE_URL( @<stage_name> , '<relative_file_path>' )
Copy

Arguments

stage_name

Nom de la zone de préparation interne ou externe où le fichier est stocké.

Note

Si le nom de la zone de préparation comprend des espaces ou des caractères spéciaux, il doit être placé entre guillemets simples (par exemple, '@"my stage"' pour une zone de préparation nommée "my stage").

relative_file_path

Chemin et nom de fichier du fichier relatif à son emplacement dans la zone de préparation.

Renvoie

La fonction renvoie une URL de fichier au format suivant :

https://<account_identifier>/api/files/<db_name>/<schema_name>/<stage_name>/<relative_path>
Copy

Où :

account_identifier

Nom d’hôte du compte Snowflake pour votre zone de préparation. Le nom d’hôte commence par un localisateur de compte (fourni par Snowflake) et se termine par le domaine Snowflake (snowflakecomputing.com) :

account_locator.snowflakecomputing.com

Pour plus de détails, voir Identificateurs de compte.

Note

Pour les comptes Business Critical , un segment privatelink est ajouté à l’URL juste avant snowflakecomputing.com (privatelink.snowflakecomputing.com), même si la connectivité privée au service Snowflake n’est pas activée pour votre compte.

Important

Actuellement, la fonction renvoie l’identificateur du compte sous la forme organization_name-account_name. Lorsqu’une URL de fichier est utilisée en entrée d’une requête GET, le point de terminaison de l’API renvoie une erreur.

Pour résoudre cette erreur, vous devez convertir manuellement l’identificateur du compte dans le formulaire applicable à votre compte :

account_locator.region_id ou

account_locator.region_id.cloud

Pour plus d’informations sur ces formulaires, voir Format 2 (existant) : localisateur de compte dans une région.

Dans une prochaine version, la fonction retournera les URLs de fichiers sous la forme correcte.

db_name

Nom de la base de données qui contient la zone de préparation où se trouvent vos fichiers.

schema_name

Nom du schéma qui contient la zone de préparation où se trouvent vos fichiers.

stage_name

Nom de la zone de préparation où se trouvent vos fichiers.

relative_path

Chemin vers les fichiers auxquels accéder en utilisant l’URL de fichier.

Notes sur l’utilisation

  • Les autorisations requises pour appeler cette fonction SQL diffèrent selon la manière dont elle est appelée :

    Fonctionnement SQL

    Autorisations requises

    Requête

    USAGE (zone de préparation externe) ou READ (zone de préparation interne)

    Procédure stockée

    Le propriétaire de la procédure stockée (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur la procédure stockée) doit avoir le privilège de zone de préparation : USAGE (zone de préparation externe) ou READ (zone de préparation interne).

    Un rôle qui interroge la procédure stockée ne requiert que le privilège USAGE sur la procédure stockée.

    UDF

    Le propriétaire de l’UDF (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur l’UDF) doit avoir le privilège de zone de préparation : USAGE (zone de préparation externe) ou READ (zone de préparation interne).

    Un rôle qui interroge les UDF ne requiert que le privilège USAGE sur les UDF.

  • Un client HTTP qui envoie une URL de fichier à l’API REST doit être configuré pour autoriser les redirections.

  • Lorsqu’on accède à une URL de fichier, l’historique des requêtes montre que la fonction interne GET_STAGE_FILE a été appelée.

  • Si les fichiers téléchargés à partir d’une zone de préparation interne sont corrompus, vérifiez avec le créateur de zone de préparation que ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') est défini pour la zone de préparation.

Exemples

Récupérer une URL de fichier pour un fichier image au format bitmap dans une zone de préparation externe :

SELECT BUILD_STAGE_FILE_URL(@images_stage,'/us/yosemite/half_dome.jpg');
Copy
https://my_account.snowflakecomputing.com/api/files/MY_DB/PUBLIC/IMAGES_STAGE/us/yosemite/half_dome.jpg
Copy