Kategorien:

Dateifunktionen

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:

  1. Authentifizieren des Benutzers.

  2. Prüfen, ob die Rolle über ausreichende Berechtigungen für den Stagingbereich verfügt, der die Datei enthält.

  3. Umleiten des Benutzers zur Stagingdatei im Cloudspeicherdienst.

Syntax

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

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

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.com ein 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_id oder

account_locator.region_id.cloud

Weitere Informationen zu diesen Formen finden Sie unter Format 2 (älter): 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');
Copy
https://my_account.snowflakecomputing.com/api/files/MY_DB/PUBLIC/IMAGES_STAGE/us/yosemite/half_dome.jpg
Copy