Unstrukturierte Datentypen¶
Snowflake unterstützt drei verschiedene Arten von Daten:
Strukturierte Daten (z. B. eine CSV-Datei) folgen einem strengen tabellarischen Schema. Strukturierte Daten können leicht in SQL-Tabellen geladen werden.
Semistrukturierte Daten (wie z. B. eine JSON- oder XML-Datei) haben ein flexibles Schema. Snowflake kann mit speziellen Funktionen auf Felder in semistrukturierten Daten zugreifen, aber die Daten lassen sich nicht so einfach abfragen wie strukturierte Daten. Semistrukturierte Daten können mithilfe von VARIANT-Spalten in SQL-Tabellen geladen werden.
Unstrukturierte Daten (wie z. B. ein Dokument, ein Bild oder eine Audiodatei) haben kein inhärentes Schema. Unstrukturierte Daten können zwar immer noch eine interne Struktur haben (z. B. müssen PNG-Bilddateien einem dokumentierten Format folgen), aber solche technischen Details haben im Allgemeinen keinen Bezug zu den Informationen in der Datei.
Snowflake bietet Möglichkeiten, mit Daten in unstrukturierten Dateien zu arbeiten, z. B. mit der AI COMPLETE-Funktion und Document AI.
Um unstrukturierte Daten in Snowflake zu verwenden, müssen sie zunächst in einem internen oder externen Stagingbereich gespeichert werden. Die Snowflake-Funktion, die die unstrukturierten Daten verarbeitet, liest sie von dort. Je nach Funktion können Sie die Datei auf eine oder mehrere der folgenden Arten angeben:
Indem Sie einen Stagingbereich und einen relativen Pfad zu der Datei als zwei separate Argumente an die Funktion übergeben, die sie verwenden wird.
Indem Sie einen Stagingbereich oder eine Bereichs-URL als Zeichenfolge übergeben.
Indem Sie ein FILE-Objekt übergeben, das mit der Funktion TO_FILE oder TRY_TO_FILE erstellt wurde.
Datentyp FILE¶
Snowflake bietet den Datentyp FILE für unstrukturierte Daten. Der FILE-Wert steht für eine Datei, die in einem internen oder externen Stagingbereich gespeichert ist, speichert jedoch nicht die Daten der Datei, sondern nur eine Referenz auf sie. Er enthält die folgenden Metadaten:
STAGE: Der Name des Stagingbereichs, in dem sich die Datei befindet.
RELATIVE_PATH: Der relative Pfad der Datei in ihrem Stagingbereich.
STAGE_FILE_URL: Die Stagingdatei-URL.
SCOPED_FILE_URL: Eine Bereichsdatei-URL.
CONTENT_TYPE: Der MIME-Typ der Datei.
SIZE: Die Größe der Datei in Bytes.
ETAG: Ein eindeutiger Hashwert des Dateiinhalts.
LAST_MODIFIED: Der Zeitstempel, zu dem die Datei zuletzt geändert wurde.
Nicht alle diese Felder sind erforderlich. Eine FILE muss die Felder CONTENT_TYPE, SIZE, ETAG und LAST_MODIFIED sowie den Speicherort der Datei enthalten, der durch STAGE plus RELATIVE_PATH, STAGE_FILE_URL oder SCOPED_FILE_URL angegeben wird.
Sie können eine Datei erstellen, indem Sie der Funktion TO_FILE oder TRY_TO_FILE eine Bereichsdatei-URL, einen Stagingbereich und einen Pfad oder ein Metadatenobjekt übergeben.
FILE-Funktionen¶
Unterkategorie |
Funktion |
---|---|
Konstrukteure |
|
Accessors |
|
Hilfsprogrammfunktionen |
|
Nutzungshinweise¶
FILE-Werte sind möglicherweise nach bestimmten Aktionen mit den zugrunde liegenden Stagingdateien nicht mehr konsistent. FILE-Werte werden nicht aktualisiert, wenn Sie die zugrunde liegende Datei ändern oder löschen. Umgekehrt ist die zugrunde liegende Datei nicht betroffen, wenn ein FILE-Wert aus einer Tabelle gelöscht wird.
Die Berechtigungen für die zugrunde liegenden Dateien richten sich nach dem Typ von URL, der bei der Erstellung der FILE angegeben wurde. Stagingdatei-URLs und Stagingbereich/Pfad-Kombinationen geben Aufrufern, die Zugriff auf den zugehörigen Stagingbereich haben, eine permanente Berechtigung. Bereichs-URLs ermöglichen einen temporären benutzerbasierten Zugriff auf die zugrunde liegende Datei für einen Zeitraum von 24 Stunden.
Verwendung unstrukturierter Daten in Snowflake über SQL¶
Erstellen Sie eine Tabelle mit einer FILE-Spalte.
CREATE TABLE images_table(img FILE);
Laden Sie Daten in die Tabelle aus dem externen Stagingbereich my_images
, der Bilddateien enthält. mpy_images
kann ein interner oder externer Stagingbereich sein.
Bemerkung
Dieser Vorgang erfordert die Unterstützung von Verzeichnistabellen im Stagingbereich. Aktivieren Sie sie, falls erforderlich, mithilfe der folgenden SQL:
ALTER STAGE my_images DIRECTORY=(ENABLE=true);
Laden Sie Daten in die Snowflake-Tabelle.
INSERT INTO images_table
SELECT TO_FILE(file_url) FROM DIRECTORY(@my_images);
Führen Sie SQL-Anweisungen auf images_table
aus. Die folgende Abfrage gibt zum Beispiel den relativen Pfad jeder Datei in der Tabelle zurück, die zuletzt zwischen dem 1. Januar 2021 und dem 1. Januar 2023 geändert wurde.
SELECT FL_GET_RELATIVE_PATH(f)
FROM images_table
WHERE FL_GET_LAST_MODIFIED(f) BETWEEN '2021-01-01' and '2023-01-01';
Bekannte Einschränkungen¶
Der Datentyp FILE kann derzeit nicht verwendet werden in:
CLUSTER BY-, GROUP BY- und ORDER BY-Klauseln
Hybridtabellen, Iceberg-Tabellen und externen Tabellen
SnowScript
Gesicherten Ansichten
Bindungen
Suchoptimierung
Clients und Konnektoren außer Snowpark Python