- Categorias:
BUILD_STAGE_FILE_URL¶
Gera um URL do arquivo Snowflake para um arquivo preparado usando o nome de estágio e o caminho relativo do arquivo como entradas. Um URL de arquivo permite o acesso prolongado a um arquivo especificado. Ou seja, o URL do arquivo não expira.
Chame esta função SQL em uma consulta, função definida pelo usuário (UDF) ou procedimento armazenado.
Acesse os arquivos em um estágio enviando o URL do arquivo em uma solicitação ao REST API para suporte de arquivo. Quando os usuários enviam um URL de arquivo para o REST API para acessar arquivos, o Snowflake executa as seguintes ações:
Autenticar o usuário.
Verifique se a função tem privilégios suficientes no estágio que contém o arquivo.
Redirecione o usuário para o arquivo preparado no serviço de armazenamento em nuvem.
Sintaxe¶
BUILD_STAGE_FILE_URL( @<stage_name> , '<relative_file_path>' )
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 do arquivo no seguinte formato:
https://<account_identifier>/api/files/<db_name>/<schema_name>/<stage_name>/<relative_path>
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 desnowflakecomputing.com
(privatelink.snowflakecomputing.com
), mesmo se a conectividade privada ao serviço Snowflake são estiver habilitado para sua conta.Importante
Atualmente, a função retorna o identificador da conta na forma de
organization_name-account_name
. Quando um URL de arquivo é usado como entrada para uma solicitação GET, o ponto de extremidade do API retorna um erro.Para resolver o erro, você deve converter manualmente o identificador da conta para a forma aplicável à sua conta:
account_locator.region_id
ouaccount_locator.region_id.cloud
Para obter mais informações sobre estas formas, consulte Formato 2 (legado): Localizador de conta em uma região.
Em um próximo lançamento, a função retornará os URLs do arquivo na forma correta.
db_name
Nome do banco de dados que contém o estágio em que seus arquivos estão localizados.
schema_name
Nome do esquema que contém o estágio em que seus arquivos estão localizados.
stage_name
Nome do estágio em que seus arquivos estão localizados.
relative_path
Caminho para os arquivos a serem acessados usando o URL do arquivo.
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)
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 de arquivo para o REST API deve ser configurado para permitir redirecionamentos.
Quando um URL de arquivo é acessado, o histórico da consulta mostra que a função interna GET_STAGE_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 de arquivo para um arquivo de imagem em formato bitmap em um estágio externo:
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