- 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>' ,
  <use_privatelink_host_for_business_critical>)
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. 
- use_privatelink_host_for_business_critical
- Gibt an, ob - privatelinkder URL für Business Critical-Konten vorangestellt werden soll.- TRUEstellt- privatelinkder URL direkt vor dem Hostnamen voran; zum Beispiel- privatelink.snowflakecomputing.com.- Bemerkung - Snowflake stellt - privatelinkder URL voran, unabhängig davon, ob Sie private Konnektivität aktiviert haben.
- FALSEsetzt die Standard-Verhaltensweise außer Kraft und fügt- privatelinknicht zur URL hinzu.
 - Standard: TRUE 
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. 
- 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', TRUE);
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, FALSE) scoped_url
  FROM acct_table
  WHERE acct_name = 'acct1';