- Catégories :
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 :
Authentifier l’utilisateur.
Vérifiez que le rôle dispose de privilèges suffisants sur la zone de préparation qui contient le fichier.
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>' )
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>
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 avantsnowflakecomputing.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
ouaccount_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');
https://my_account.snowflakecomputing.com/api/files/MY_DB/PUBLIC/IMAGES_STAGE/us/yosemite/half_dome.jpg