- Kategorien:
BUILD_STAGE_FILE_URL¶
Generiert eine Datei-URL für Snowflake, die auf eine Stagingdatei verweist, wobei der Name des Stagingbereichs und der relative Dateipfad als Eingaben verwendet werden. Eine Datei-URL erlaubt einen verlängerten Zugriff auf eine bestimmte Datei. Das heißt, dass die Datei-URL nicht abläuft.
Rufen Sie diese SQL-Funktion in einer Abfrage, einer benutzerdefinierten Funktion (UDF) oder einer gespeicherten Prozedur auf.
Greifen Sie auf Dateien in einem Stagingbereich zu, indem Sie die Datei-URL in einer Anforderung an die REST-API für Dateisupport senden. Wenn Benutzer eine Datei-URL an die REST-API senden, um auf Dateien zuzugreifen, führt Snowflake die folgenden Aktionen aus:
- Authentifizieren des Benutzers. 
- Prüfen, ob die Rolle über ausreichende Berechtigungen für den Stagingbereich verfügt, der die Datei enthält. 
- Umleiten des Benutzers zur Stagingdatei im Cloudspeicherdienst. 
Syntax¶
BUILD_STAGE_FILE_URL( @<stage_name> , '<relative_file_path>' )
Argumente¶
- stage_name
- Name des internen oder externen Stagingbereichs, in dem die Datei gespeichert ist. - Bemerkung - Wenn der Stagingbereichsname Leerzeichen oder Sonderzeichen enthält, muss er in einfache Anführungszeichen eingeschlossen werden (z. B. - '@"my stage"'für einen Stagingbereich mit dem Namen- "my stage").
- relative_file_path
- Pfad und Dateiname der Datei relativ zu ihrem Speicherort im Stagingbereich. 
Rückgabewerte¶
Die Funktion gibt eine Datei-URL im folgenden Format zurück:
https://<account_identifier>/api/files/<db_name>/<schema_name>/<stage_name>/<relative_path>
Wobei:
- account_identifier
- Hostname des Snowflake-Kontos für Ihren Stagingbereich. Der Hostname beginnt mit einem eindeutigen Konto-Locator (von Snowflake bereitgestellt) und endet mit der Snowflake-Domain ( - snowflakecomputing.com):- account_locator.snowflakecomputing.com- Weitere Details dazu finden Sie unter Kontobezeichner. - Bemerkung - Für Business Critical-Konten wird der URL direkt vor - snowflakecomputing.comein- privatelink-Segment vorangestellt (- privatelink.snowflakecomputing.com), auch wenn private Konnektivität zum Snowflake-Dienst für Ihr Konto nicht aktiviert ist.- Wichtig - Derzeit gibt die Funktion die Kontobezeichner in der Form - organization_name-account_name(<Organisationsname>.<Kontoname>) zurück. Wenn eine Datei-URL als Eingabe für eine GET-Anforderung verwendet wird, gibt der API-Endpunkt einen Fehler zurück.- Um den Fehler zu beheben, müssen Sie den Kontobezeichner manuell in die für Ihr Konto zutreffende Form umwandeln: - account_locator.region_idoder- account_locator.region_id.cloud- Weitere Informationen zu diesen Formen finden Sie unter Format 2: Konto-Locator in einer Region. - In einem kommenden Release wird die Funktion die Datei-URLs in der korrekten Form zurückgeben. 
- db_name
- Name der Datenbank, die den Stagingbereich enthält, in dem sich Ihre Dateien befinden. 
- schema_name
- Name des Schemas, das den Stagingbereich enthält, in dem sich Ihre Dateien befinden. 
- stage_name
- Name des Stagingbereichs, in dem sich Ihre Dateien befinden. 
- relative_path
- Pfad zu den Dateien, auf die mit der Datei-URL zugegriffen werden soll. 
Nutzungshinweise¶
- Die für den Aufruf dieser SQL-Funktion erforderlichen Berechtigungen hängen von der Art des Aufrufs ab: - SQL-Operation - Erforderliche Berechtigungen - Abfrage - USAGE (externer Stagingbereich) oder READ (interner Stagingbereich) - Gespeicherte Prozeduren - Der Eigentümer der gespeicherten Prozedur (d. h. die Rolle mit OWNERSHIP-Berechtigung für die Ansicht) muss über die Berechtigung für den Stagingbereich verfügen: USAGE (externer Stagingbereich) oder READ (interner Stagingbereich). - Eine Rolle, die die gespeicherte Prozedur abfragt, benötigt nur die USAGE-Berechtigung für die gespeicherte Prozedur. - UDF - Der Eigentümer der UDF (d. h. die Rolle mit OWNERSHIP-Berechtigung für die UDF) muss über die Berechtigung für den Stagingbereich verfügen: USAGE (externer Stagingbereich) oder READ (interner Stagingbereich). - Eine Rolle, die die UDF abfragt, benötigt nur die USAGE-Berechtigung für die UDF. 
- Ein HTTP-Client, der eine Datei-URL an die REST-API sendet, muss so konfiguriert sein, dass er Umleitungen zulässt. 
- Bei einem Zugriff auf eine Datei-URL zeigt der Abfrageverlauf, dass die interne Funktion GET_STAGE_FILE aufgerufen wurde. 
- Wenn aus einem internen Stagingbereich heruntergeladene Dateien beschädigt sind, überprüfen Sie mit dem Ersteller des Stagingbereichs, ob - ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')für den Stagingbereich eingestellt ist.
Beispiele¶
Abrufen der Datei-URL einer Bilddatei im Bitmap-Format in einem externen Stagingbereich:
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