Categorias:

Funções de arquivo

BUILD_SCOPED_FILE_URL

Gera um URL do arquivo Snowflake com escopo para um arquivo preparado usando o nome de estágio e o caminho relativo do arquivo como entradas.

Uma URL com escopo é codificada e permite o acesso a um arquivo especificado por um período limitado de tempo. O URL com escopo na saída é válido para o chamador até que o período de resultado da consulta persistente termine (até que o cache de resultados expire). Atualmente, esse período é de 24 horas.

Chame esta função SQL em uma consulta ou exibição. Você também pode usar esta função SQL para passar um URL com escopo definido para uma função definida pelo usuário (UDF) ou procedimento armazenado.

Sintaxe

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

Argumentos

stage_name

Nome do estágio interno ou externo em que o arquivo está armazenado.

Nota

Se o nome do estágio incluir espaços ou caracteres especiais, ele deve ser colocado entre aspas simples (por exemplo, '@"my stage"' para um estágio chamado "my stage").

relative_file_path

Caminho e nome do arquivo em relação ao seu local no estágio.

Retornos

A função retorna um URL com escopo no seguinte formato:

https://<account_identifier>/api/files/<query_id>/<encoded_file_path>
Copy

Onde:

account_identifier

Nome do host da conta Snowflake para seu estágio. O nome do host começa com um localizador de conta fornecido pelo Snowflake e termina com o domínio Snowflake (snowflakecomputing.com):

account_locator.snowflakecomputing.com

Para obter mais detalhes, consulte Identificadores de conta.

Nota

Para contas Business Critical, um segmento privatelink é anexado ao URL logo antes de snowflakecomputing.com (privatelink.snowflakecomputing.com), mesmo se a conectividade privada ao serviço Snowflake são estiver habilitado para sua conta.

query_id

ID da consulta da chamada BUILD_SCOPED_FILE_URL que gerou o URL com escopo.

encoded_file_path

Caminho codificado para os arquivos a serem acessados usando o URL com escopo.

Notas de uso

  • As permissões exigidas para chamar esta função SQL diferem dependendo de como ela é chamada:

    Operação SQL

    Permissões exigidas

    Consulta

    USAGE (estágio externo) ou READ (estágio interno)

    Definição da coluna em uma exibição

    O proprietário da exibição (ou seja, a função com o privilégio OWNERSHIP na exibição) deve ter o privilégio de estágio: USAGE (estágio externo) ou READ (estágio interno).

    Uma função que consulta a exibição exige apenas o privilégio SELECT nela.

    Procedimento armazenado

    O proprietário do procedimento armazenado (ou seja, a função com o privilégio OWNERSHIP no procedimento armazenado) deve ter o privilégio de estágio: USAGE (estágio externo) ou READ (estágio interno).

    Uma função que consulta o procedimento armazenado exige apenas o privilégio USAGE no procedimento armazenado.

    UDF

    O proprietário do UDF (ou seja, a função com o privilégio OWNERSHIP no UDF) deve ter o privilégio de estágio: USAGE (estágio externo) ou READ (estágio interno).

    Uma função que consulta o UDF exige apenas o privilégio USAGE no UDF.

  • Um cliente HTTP que envia um URL com escopo para o REST API deve ser configurado para permitir redirecionamentos.

  • Quando um URL com escopo é acessado, o histórico da consulta mostra que a função interna GET_SCOPED_FILE foi chamada.

  • Se os arquivos baixados de um estágio interno estiverem corrompidos, verifique com o criador do estágio se ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') está definido para o estágio.

Exemplos

Recuperar um URL com escopo para um arquivo de imagem em formato bitmap em um estágio externo:

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

Criar uma exibição segura que filtre os resultados de uma chamada de função BUILD_SCOPED_FILE_URL para um público específico. Neste exemplo, consultar a exibição segura retorna somente aqueles arquivos no caminho do arquivo de estágio que incluem a cadeia de caracteres 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