- Catégories :
BUILD_SCOPED_FILE_URL¶
Génère une URL de fichier Snowflake scopée 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 scopée est codée et permet l’accès à un fichier spécifié pour une période de temps limitée. L’URL scopée dans la sortie est valable pour l’appelant jusqu’à la fin de la période de persistance des résultats de la requête (c’est-à-dire jusqu’à l’expiration du cache des résultats). Cette période est actuellement de 24 heures.
Appelez cette fonction SQL dans une requête ou une vue. Vous pouvez également utiliser cette fonction SQL pour transmettre une URL scopée à une fonction définie par l’utilisateur (UDF) ou à une procédure stockée.
Syntaxe¶
BUILD_SCOPED_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 scopée au format suivant :
https://<account_identifier>/api/files/<query_id>/<encoded_file_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.query_id
ID de requête de l’appel BUILD_SCOPED_FILE_URL qui a généré l’URL scopée.
encoded_file_path
Chemin d’accès codé aux fichiers auxquels il faut accéder en utilisant l’URL scopée.
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)
Définition des colonnes dans une vue
Le propriétaire de la vue (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur la vue) 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 vue ne requiert que le privilège SELECT sur la vue.
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 scopée à l’API REST doit être configuré pour autoriser les redirections.
Lorsque l’on accède à une URL scopée, l’historique des requêtes montre que la fonction interne GET_SCOPED_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 scopée pour un fichier image au format bitmap dans une zone de préparation externe :
SELECT BUILD_SCOPED_FILE_URL(@images_stage,'/us/yosemite/half_dome.jpg');
https://my_account.snowflakecomputing.com/api/files/019260c2-00c0-f2f2-0000-4383001cf046/bXlfZGF0YWJhc2UvbXlfc2NoZW1hL215X3N0YWdlL2ZvbGRlcjEvZm9sZGVyMi9maWxlMQ
Créez une vue sécurisée qui filtre les résultats d’un appel de fonction BUILD_SCOPED_FILE_URL pour un public spécifique. Dans cet exemple, l’interrogation de la vue sécurisée renvoie uniquement les fichiers du chemin d’accès aux fichiers de la zone de préparation qui comprennent la chaîne acct1
:
-- Create a table that stores the relative file path for each staged file along with any other related data.
CREATE TABLE acct_table (
acct_name string,
relative_file_path string
);
-- Create a secure view on the table you created.
-- A role that has the SELECT privilege on the secure view has scoped access to the filtered set of files that include the acct1 text string.
CREATE SECURE VIEW acct1_files
AS
SELECT BUILD_SCOPED_FILE_URL(@acct_files, relative_file_path) scoped_url
FROM acct_table
WHERE acct_name = 'acct1';