- Kategorien:
BUILD_SCOPED_FILE_URL¶
Generiert eine bereichsbezogene Snowflake-Datei-URL, die auf eine Stagingdatei verweist, wobei der Name des Stagingbereichs und der relative Dateipfad als Eingaben verwendet werden.
Eine Bereichs-URL ist verschlüsselt und erlaubt den Zugriff auf eine bestimmte Datei für einen begrenzten Zeitraum. Die in der Ausgabe enthaltene Bereichs-URL ist für den Aufrufer so lange gültig, bis der Zeitraum für persistent gespeicherte Abfrageergebnisse endet (bis der Ergebnis-Cache abläuft). Dieser Zeitraum beträgt derzeit 24 Stunden.
Rufen Sie diese SQL-Funktion in einer Abfrage oder Ansicht auf. Sie können diese SQL-Funktion auch verwenden, um eine Bereichs-URL an eine benutzerdefinierte Funktion (UDF) oder eine gespeicherte Prozedur zu übergeben.
Syntax¶
BUILD_SCOPED_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 Bereichs-URL im folgenden Format zurück:
https://<account_identifier>/api/files/<query_id>/<encoded_file_path>
Wobei:
account_identifier
Hostname des Snowflake-Kontos für Ihren Stagingbereich. Der Hostname beginnt mit einem von Snowflake bereitgestellten Konto-Locator und endet mit der Snowflake-Domäne (
snowflakecomputing.com
):account_locator.snowflakecomputing.com
Weitere Details dazu finden Sie unter Kontobezeichner.
Bemerkung
Bei Business Critical-Konten wird der URL direkt vor
snowflakecomputing.com
einprivatelink
-Segment vorangestellt (privatelink.snowflakecomputing.com
), auch wenn private Konnektivität zum Snowflake-Dienst für Ihr Konto nicht aktiviert ist.query_id
Abfrage-ID des BUILD_SCOPED_FILE_URL-Aufrufs, der die Bereichs-URL generiert hat.
encoded_file_path
Kodierter Pfad zu den Dateien, auf die mit der Bereichs-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)
Spaltendefinition in einer Ansicht
Der Eigentümer der Ansicht (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 Ansicht abfragt, benötigt nur die SELECT-Berechtigung für die Ansicht.
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 Bereichs-URL an die REST-API sendet, muss so konfiguriert sein, dass er Umleitungen zulässt.
Bei einem Zugriff auf eine Bereichs-URL zeigt der Abfrageverlauf an, dass die interne Funktion GET_SCOPED_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 einer Bereichs-URL für eine Bilddatei im Bitmap-Format in einem externen Stagingbereich:
SELECT BUILD_SCOPED_FILE_URL(@images_stage,'/us/yosemite/half_dome.jpg');
https://my_account.snowflakecomputing.com/api/files/019260c2-00c0-f2f2-0000-4383001cf046/bXlfZGF0YWJhc2UvbXlfc2NoZW1hL215X3N0YWdlL2ZvbGRlcjEvZm9sZGVyMi9maWxlMQ
Erstellen Sie eine sichere Ansicht, die die Ergebnisse eines BUILD_SCOPED_FILE_URL-Funktionsaufrufs für eine bestimmte Zielgruppe filtert. Im folgenden Beispiel werden bei Abfrage der sicheren Ansicht nur die Dateien im Stagingbereichs-Dateipfad zurückgegeben, die die Zeichenfolge acct1
enthalten:
-- 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';