Catégories :

Nouvelles fonctions

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.

Appelez cette fonction SQL dans une requête, une vue, une fonction définie par l’utilisateur (UDF) ou une procédure stockée. L’URL scopée dans la sortie n’est valable pour l’appelant que 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) : actuellement 24 heures.

Accédez aux fichiers d’une zone de préparation en utilisant l’une des méthodes suivantes :

  • Récupérez une URL scopée dans Snowsight. Cliquez sur l’URL de l’objet dans la table des résultats.

  • Envoyez l’URL scopée dans une requête à l’API REST pour la prise en charge du fichier. Lorsque les utilisateurs envoient une URL scopée à l’API REST pour accéder aux fichiers, Snowflake effectue les actions suivantes :

    1. Authentifier l’utilisateur. Vérifier que c’est l’utilisateur actuel qui a appelé la fonction BUILD_SCOPED_FILE_URL et généré l’URL scopée.

    2. Vérifier que l’URL scopée n’est pas expirée.

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

Syntaxe

BUILD_SCOPED_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 scopée au format suivant :

https://<account_identifier>/api/files/<query_id>/<encoded_file_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.

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');
Copy
https://my_account.snowflakecomputing.com/api/files/019260c2-00c0-f2f2-0000-4383001cf046/bXlfZGF0YWJhc2UvbXlfc2NoZW1hL215X3N0YWdlL2ZvbGRlcjEvZm9sZGVyMi9maWxlMQ
Copy

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';
Copy