Übersicht zum Laden von Daten¶
Dieses Thema bietet einen Überblick über die wichtigsten Optionen zum Laden von Daten in Snowflake.
Um die Datenaufnahmelatenz Ihrer Datenpipelines einfach und genau zu messen, verwenden Sie Zeilenzeitstempel. Weitere Informationen dazu finden Sie unter Verwenden von Zeilenzeitstempeln, um die Latenz in Ihren Pipelines zu messen.
Unterstützte Dateispeicherorte¶
In Snowflake wird der Speicherort von Datendateien im Cloudspeicher als Stagingbereich bezeichnet. Der Befehl COPY INTO <Tabelle>, der sowohl für das massenhafte als auch für das kontinuierliche Laden von Daten (Snowpipe) verwendet wird, unterstützt sowohl Konten für Cloud-Speicher, die von Ihrer Geschäftseinheit verwaltet werden (externe Stagingbereiche), als auch Cloud-Speicher, die in Ihrem Snowflake-Konto enthalten sind (interne Stagingbereiche).
Externe Stagingbereiche¶
Das Laden von Daten von einem der folgenden Cloudspeicherdienste wird unabhängig von der Cloudplattform unterstützt, auf der sich Ihr Snowflake-Konto befindet:
Amazon S3
Google Cloud Storage
Microsoft Azure
Sie können nicht auf Daten in archivierten Cloudspeicherklassen zugreifen, die erst wiederhergestellt werden müssen, bevor sie abgerufen werden können. Zu diesen Archivspeicherklassen gehören zum Beispiel die Amazon S3-Speicherklassen Glacier Flexible Retrieval und Glacier Deep Archive oder Microsoft Azure Archive Storage.
Stellen Sie Daten im Stagingbereich bereit, indem Sie die Datendateien mit den vom Cloudspeicherdienst bereitgestellten Tools in Ihr Cloudspeicherkonto hochladen.
Ein benannter externer Stagingbereich ist ein Datenbankobjekt, das in einem Schema erstellt wurde. Dieses Objekt speichert die URL zu den Dateien im Cloudspeicher, die Einstellungen für den Zugriff auf das Cloudspeicherkonto und praktische Einstellungen wie die Optionen, die das Format der Stagingdateien beschreiben. Erstellen Sie Stagingbereiche mit dem Befehl CREATE STAGE.
Bemerkung
Beim Laden von Daten aus Dateien eines Cloudspeicherdienstes, der sich in einer anderen Region oder auf einer anderen Cloudplattform als Ihr Snowflake-Konto befinden, können einige Abrechnungsgebühren für die Datenübertragung anfallen. Weitere Informationen dazu finden Sie unter Erläuterungen zu Datentransferkosten.
Interne Stagingbereiche¶
Snowflake verwaltet die folgenden Stagingbereichstypen in Ihrem Konto:
- Benutzer:
Jedem Benutzer wird ein Benutzer-Stagingbereich zum Speichern von Dateien zugewiesen. Dieser Stagingbereichstyp dient zum Speichern von Dateien, die von einem einzelnen Benutzer bereitgestellt und verwaltet werden, jedoch in mehrere Tabellen geladen werden können. Im Gegensatz zu benannten Stagingbereichen können Benutzer-Stagingbereiche nicht geändert oder gelöscht werden.
- Tabelle:
Für jede in Snowflake erstellte Tabelle steht ein Tabellen-Stagingbereich zur Verfügung. Dieser Stagingbereichstyp dient zum Speichern von Dateien, die von einem oder mehreren Benutzern im Stagingbereich bereitgestellt und verwaltet werden, aber nur in eine einzelne Tabelle geladen werden. Tabellen-Stagingbereiche können nicht geändert oder gelöscht werden.
Beachten Sie, dass ein Tabellen-Stagingbereich kein separates Datenbankobjekt ist, sondern ein impliziter Stagingbereich, der an die Tabelle selbst gebunden ist. Ein Tabellen-Stagingbereich hat keine eigenen zuweisbaren Berechtigungen. Um Dateien in einem Tabellen-Stagingbereich bereitzustellen oder die Dateien im Stagingbereich aufzulisten, abzufragen oder zu löschen, müssen Sie der Tabelleneigentümer sein (die Rolle mit der Berechtigung OWNERSHIP für die Tabelle).
- Benannt:
Ein benannter interner Stagingbereich ist ein Datenbankobjekt, das in einem Schema erstellt wurde. Dieser Stagingbereichstyp dient zum Speichern von Dateien, die von einem oder mehreren Benutzern im Stagingbereich bereitgestellt und verwaltet werden und die in eine oder mehrere Tabellen geladen werden. Da benannte Stagingbereiche Datenbankobjekte sind, kann die Möglichkeit zum Erstellen, Ändern, Verwenden oder Löschen dieser Objekte mithilfe von sicherheitsspezifischen Zugriffssteuerungsrechten gesteuert werden. Erstellen Sie Stagingbereiche mit dem Befehl CREATE STAGE.
Laden Sie Dateien mit dem Befehl PUT von Ihrem lokalen Dateisystem in einen der internen Stagingbereichstypen hoch.
Massenladen vs. kontinuierliches Laden¶
Snowflake bietet die folgenden Hauptlösungen zum Laden von Daten. Die beste Lösung kann vom zu ladenden Datenvolumen und der Häufigkeit des Ladens abhängen.
Massenladen mit dem Befehl COPY¶
Diese Option ermöglicht das Laden von Datenbatches aus Dateien, die bereits in Cloudspeicher verfügbar sind, oder das Kopieren (d. h. Staging) von Datendateien von einem lokalen Computer zu einem internen (d. h. Snowflake) Cloudspeicherort, bevor die Daten mit dem COPY-Befehl in Tabellen geladen werden.
Computeressourcen¶
Das Massenladen basiert auf vom Benutzer bereitgestellten virtuellen Warehouses, die in der Anweisung COPY angegeben sind. Benutzer müssen das Warehouse entsprechend dimensionieren, um die erwarteten Lasten aufzunehmen.
Einfache Transformationen während eines Ladevorgangs¶
Snowflake unterstützt die Transformation von Daten beim Laden in eine Tabelle mit dem Befehl COPY. Zu den Optionen gehören:
Neuordnung von Spalten
Auslassung von Spalten
Umwandlungen
Kürzung von Textzeichenfolgen, die die Länge der Zielspalte überschreiten.
Es ist nicht erforderlich, dass die Datendateien die gleiche Anzahl und Reihenfolge der Spalten aufweisen wie die Zieltabelle.
Kontinuierliches Laden mit Snowpipe¶
Diese Option dient dazu, kleine Datenmengen (z. B. Microbatches) zu laden und diese schrittweise für die Analyse zur Verfügung zu stellen. Snowpipe lädt Daten innerhalb weniger Minuten, nachdem Dateien einem Stagingbereich hinzugefügt und zur Erfassung übermittelt wurden. Dies stellt sicher, dass Benutzer die neuesten Ergebnisse erhalten, sobald die Rohdaten verfügbar sind.
Computeressourcen¶
Snowpipe verwendet von Snowflake bereitgestellte Computeressourcen (d. h. ein serverloses Computemodell). Diese von Snowflake bereitgestellten Ressourcen werden bei Bedarf automatisch in der Größe angepasst und aufwärts bzw. abwärts skaliert und mithilfe einer sekundengenauen Abrechnung in Rechnung gestellt und aufgeschlüsselt. Die Datenerfassung wird auf der Grundlage der tatsächlichen Arbeitslasten berechnet.
Einfache Transformationen während eines Ladevorgangs¶
Die Anweisung COPY in einer Pipedefinition unterstützt dieselben COPY-Transformationsoptionen wie beim Massenladen von Daten.
Darüber hinaus können Daten-Pipelines Snowpipe nutzen, um mithilfe von automatisierten Aufgaben und den Change Data Capture (CDC)-Informationen in Streams kontinuierlich Microbatches an Daten in Stagingbereich-Tabellen zu laden und für Transformation und Optimierung der Daten zu sorgen.
Kontinuierliches Laden mit Snowpipe Streaming¶
Die Snowpipe Streaming-API schreibt Datenzeilen direkt in Snowflake-Tabellen, ohne dass Staging-Dateien erforderlich sind. Diese Architektur führt zu geringeren Latenzen und entsprechend niedrigeren Kosten für das Laden beliebiger Datenmengen, was dieses Feature zu einem leistungsstarken Tool für die Verarbeitung von Quasi-Echtzeit-Datenstreams macht.
Snowpipe Streaming ist auch für den Snowflake-Konnektor für Kafka verfügbar, der einen einfachen Upgrade-Pfad bietet, um die Vorteile der geringeren Latenz und der niedrigeren Kosten nutzen zu können.
Weitere Informationen dazu finden Sie unter Snowpipe Streaming.
Laden von Daten aus Apache Kafka-Themen¶
Mit Snowflake-Konnektor für Kafka können Benutzer eine Verbindung zu einem Apache Kafka-Server herstellen, Daten aus einem oder mehreren Themen lesen und diese Daten in Snowflake-Tabellen laden.
DML-Fehlerprotokollierung¶
Wenn Sie eine Reihe von DML-Anweisungen ausführen und eine der Anweisungen einen Fehler zurückgibt, endet die DML-Operation, und die von der DML-Anweisung vorgenommenen Änderungen werden rückgängig gemacht. Wenn Sie die restlichen DML-Anweisungen ausführen und den aufgetretenen Fehler protokollieren möchten, können Sie die DML-Fehlerprotokollierung für die Tabelle aktivieren. Die Tabelle, für die die DML-Fehlerprotokollierung aktiviert ist, wird als Basistabelle bezeichnet. Fehler werden in einer Fehlertabelle protokolliert, die mit der Basistabelle verbunden ist.
Die DML-Fehlerprotokollierung wird für eine Tabelle nur aktiviert, wenn beide der folgenden Bedingungen erfüllt sind:
Die ERROR_LOGGING-Eigenschaft ist für die Tabelle auf
TRUEeingestellt.Der Parameter OPT_OUT_ERROR_LOGGING ist für die aktuelle Sitzung auf
FALSEgesetzt.
Die DML-Fehlerprotokollierung wird für eine Tabelle nur deaktiviert, wenn eine der folgenden Bedingungen erfüllt ist:
Die ERROR_LOGGING-Eigenschaft ist für die Tabelle auf
FALSEeingestellt.Der Parameter OPT_OUT_ERROR_LOGGING ist für die aktuelle Sitzung auf
TRUEgesetzt.
In den folgenden Abschnitten finden Sie weitere Informationen zur DML-Fehlerprotokollierung:
Anwendungsfälle für die DML-Fehlerprotokollierung¶
Sie könnten die DML-Fehlerprotokollierung verwenden, um Ausfälle bei Fehlern für die folgenden Anwendungsfälle zu vermeiden:
Migration von Daten von Drittanbietern, die auf die DML-Fehlerprotokollierung angewiesen ist, wie z. B. Daten aus einer Oracle-Datenbank.
Durchsetzung einiger Tabelleneinschränkungen, wie z. B. NOTNULL-Einschränkungen bei der Datenaufnahme.
Konfigurieren der DML-Fehlerprotokollierung für eine Tabelle¶
Sie können die DML-Fehlerprotokollierung für eine standardmäßige Snowflake-Tabelle oder eine von Snowflake verwaltete Iceberg-Tabelle aktivieren oder deaktivieren, wenn Sie die Tabelle erstellen oder ändern.
Um die Fehlerprotokollierung für eine Tabelle zu aktivieren oder zu deaktivieren, verwenden Sie die folgenden SQL-Befehle, um die ERROR_LOGGING-Eigenschaft für die Tabelle festzulegen:
CREATE ICEBERG TABLE (nur von Snowflake verwaltet)
ALTER ICEBERG TABLE (nur von Snowflake verwaltet)
In den folgenden Beispielen wird die DML-Fehlerprotokollierung für Tabellen konfiguriert, und es wird gezeigt, wie Fehler in Fehlertabellen protokolliert werden:
In den folgenden Beispielen wird die DML-Fehlerprotokollierung für Tabellen konfiguriert, und es wird gezeigt, wie Fehler in Fehlertabellen protokolliert werden:
Fehler beim direkten Einfügen von Zeilen protokollieren¶
Das folgende Beispiel protokolliert Fehler, die beim direkten Einfügen von Zeilen in eine Tabelle auftreten:
Erstellen Sie eine Tabelle, und aktivieren Sie die DML-Fehlerprotokollierung für diese:
Führen Sie eine INSERT-Anweisung aus, die versucht, mehrere Zeilen einzufügen, einschließlich gültiger und ungültiger Werte:
Fragen Sie die Tabelle ab, um zu bestätigen, dass eine gültige Zeile eingefügt wurde:
Fragen Sie die Fehlertabelle für die
test_dml_error_logging-Basistabelle ab, um die protokollierten Fehler anzuzeigen:Deaktivieren Sie die DML-Fehlerprotokollierung für die
test_dml_error_logging-Tabelle:Versuchen Sie das Gleiche mit der INSERT-Anweisung, die Sie zuvor ausgeführt haben. Ein Fehler wurde zurückgegeben, und in einer Fehlertabelle werden keine Fehler protokolliert:
Fehler beim Einfügen von Zeilen aus einer Tabelle in eine andere Tabelle protokollieren¶
Das folgende Beispiel protokolliert Fehler beim Einfügen von Zeilen aus einer Tabelle in eine andere Tabelle:
Erstellen Sie eine Quelltabelle, und fügen Sie Zeilen ein:
Erstellen Sie eine Zieltabelle mit derselben Definition wie die Quelltabelle:
Aktivieren Sie die DML-Fehlerprotokollierung in der
dml_error_logging_target-Tabelle:Fügen Sie Werte in die Zieltabelle ein, indem Sie die Quelltabelle abfragen, sodass eine der Einfügungen zu einem Fehler aufgrund einer Division durch Null führt:
Fragen Sie die Tabelle ab, um zu bestätigen, dass zwei gültige Zeilen eingefügt wurden:
Fragen Sie die Fehlertabelle für die
dml_error_logging_target-Basistabelle ab, um die protokollierten Fehler anzuzeigen:
Fehlerprotokollierung und Fehlertabellen¶
Wenn die Fehlerprotokollierung für eine Tabelle aktiviert ist, erstellt Snowflake automatisch eine Fehlertabelle, die mit der Basistabelle verknüpft ist. DML-Operationen, bei denen unterstützte Fehler auftreten, protokollieren die Fehler in der Fehlertabelle, anstatt fehlzuschlagen.
Wenn die DML-Fehlerprotokollierung für eine Tabelle aktiviert ist, werden die folgenden Typen von DML-Anweisungen protokolliert:
Einzelne Tabelle INSERT
UPDATE
MERGE
Fehlertabellen haben eine feste Definition und können nur vom Besitzenden der Basistabelle oder einem Benutzenden aufgerufen werden, der über eine Rolle verfügt, der die SELECT ERROR TABLE-Berechtigung für die Basistabelle zugewiesen wurde. Die einzigen unterstützten direkten Operationen für eine Fehlertabelle sind SELECT- und TRUNCATE-Anweisungen. Sie können andere Arten von Anweisungen nicht direkt in Fehlertabellen ausführen. Fehlertabellen können nicht indirekt in materialisierten Ansichten oder dynamischen Tabellen verwendet werden.
Sie können die Daten aus der Fehlertabelle in andere Tabellen kopieren. Sie können die Daten in einer Fehlertabelle entfernen, indem Sie den Befehl TRUNCATE ausführen.
In den folgenden Abschnitten finden Sie weitere Informationen zur Fehlerprotokollierung und zu Fehlertabellen:
Definition der Fehlertabelle¶
Snowflake erstellt Fehlertabellen mit einer Standarddefinition, die nicht geändert werden kann.
Wenn Sie die DML-Fehlerprotokollierung für eine Basistabelle deaktivieren oder eine Basistabelle löschen, die eine Fehlertabelle enthält, wird die mit der Basistabelle verbundene Fehlertabelle automatisch gelöscht.
Eine Fehlertabelle hat die folgenden Spalten:
Name |
Typ |
Beschreibung |
|---|---|---|
|
TIMESTAMP |
Der Zeitstempel der Anweisung, die den Fehler ausgelöst hat. |
|
VARCHAR |
Die eindeutige ID der Anweisung, die den Fehler ausgelöst hat. |
|
NUMBER |
Der Fehlercode. Wenn mehrere Spalten einer Zeile Fehler enthalten, wird in dieser Spalte nur der erste auftretende Fehler erfasst. |
|
OBJECT |
Die Fehlermetadaten. Die OBJECT-Werte haben die folgende Struktur: Die OBJECT-Werte enthalten die folgenden Schlüssel-Werte-Paare:
Wenn mehrere Spalten einer Zeile Fehler enthalten, wird in dieser Spalte nur der erste auftretende Fehler erfasst. |
|
OBJECT |
Die Daten, die den Fehler verursacht haben. Die OBJECT-Werte haben die folgende Struktur: Die OBJECT-Werte enthalten die Schlüssel-Wert-Paare, die jede Spalte in der Basistabelle darstellen. Der Schlüssel ist der Spaltenname. Bei ungültigen Spaltenwerten, die das Fehlschlagen der DML-Operation verursacht haben, ist der Wert im Schlüssel-Wert-Paar ein Array, das die Werte enthält. Gültige Werte werden direkt angezeigt. das heißt, sie werden nicht in Arrays angezeigt. Wenn die Daten nicht in einem OBJECT-Wert dargestellt werden können, ist der Wert NULL. |
Interagieren mit Fehlertabellen¶
Sie können SELECT-Anweisungen und TRUNCATE-Anweisungen für Fehlertabellen unter Verwendung der folgenden Syntax ausführen:
Wobei:
base_table_nameDer Name der Tabelle, für die die Fehlertabelle erstellt wurde.
Wenn der Name der Basistabelle beispielsweise my_table lautet, fragt die folgende Anweisung die Fehlertabelle für diese Basistabelle ab:
Die folgende Anweisung schneidet die Fehlertabelle ab:
Anforderungen an die Zugriffssteuerung von Fehlertabellen¶
Jede Rolle, die Einfügungen in eine Basistabelle vornehmen kann, kann Einfügungen in deren Fehlertabelle auslösen. Unabhängig von der aktuellen Rolle ist das direkte Einfügen in eine Fehlertabelle nicht zulässig.
Die folgenden Benutzenden können SELECT-Anweisungen für eine Fehlertabelle ausführen:
Der Besitzende der Basistabelle der Fehlertabelle.
Benutzende, denen die SELECT ERROR TABLE-Berechtigung für die Basistabelle zugewiesen wurde, entweder über eine Rolle oder direkt.
Um einer Basistabelle die SELECT ERROR TABLE-Berechtigung zuzuweisen, führen Sie eine GRANT <Berechtigungen> … TO ROLE-Anweisung oder eine GRANT <Berechtigungen> … TO USER-Anweisung aus.
Diese Anweisungen verwenden die folgende Syntax:
Um zum Beispiel die SELECT ERROR TABLE-Berechtigung in einer Basistabelle namens
mybasetableeiner Rolle namensmyrolezuzuweisen, führen Sie die folgende Anweisung aus:
Um anderen Rollen Zugriff auf eine Fehlertabelle zu gewähren, kann der Besitzende der Basistabelle alternativ auch eine Ansicht erstellen, die auf der Fehlertabelle basiert, und Zugriff auf diese Ansicht gewähren.
Metadaten für die Fehlerprotokollierung¶
Um festzustellen, ob die Fehlerprotokollierung für eine Tabelle aktiviert ist, können Sie die GET_DDL-Funktion ausführen und den Namen der Basistabelle übergeben:
Beispiel: Für eine Basistabelle mit dem Namen test_dml_error_logging im aktuellen Schema führen Sie die folgende Anweisung aus:
Die Kennzahlen für Fehlertabellen werden in den folgenden Ansichten erfasst:
Streams auf Fehlertabellen¶
Streams werden nicht direkt in Fehlertabellen unterstützt. Um die Änderungsverfolgung für Fehlertabellen zu aktivieren, erstellen Sie zunächst eine Ansicht in der Fehlertabelle, und erstellen Sie dann einen Stream in der Ansicht.
Das folgende Beispiel zeigt Ihnen, wie Sie die Änderungsverfolgung für Fehlertabellen aktivieren:
Führen Sie den CREATE VIEW-Befehl aus, um eine Ansicht in der Fehlertabelle zu erstellen:
Führen Sie den CREATE STREAM-Befehl aus, um einen Stream in der Ansicht zu erstellen:
Nutzungshinweise zur DML-Fehlerprotokollierung¶
Die folgenden Nutzungshinweise gelten, wenn die Fehlerprotokollierung für eine Tabelle aktiviert ist:
Es werden nur Fehler protokolliert, die sich direkt auf die Basistabelle beziehen.
Die folgenden Arten von Fehlern werden protokolliert:
Verstöße gegen NOT NULL-Tabelleneinschränkungen.
Typkonvertierungsfehler, die auftreten, wenn versucht wird, einen Wert in die Basistabellenspalte zu konvertieren.
Inkompatible Genauigkeits- und Skalierungswerte.
Inkompatible Länge für Zeichenfolgen- und Binärtypen.
Einige Auswertungsfehler für Ausdrücke, wie z. B. Division durch Null oder PARSE_JSON-Funktionsfehler.
INSERT- und CREATE TABLE … AS SELECT (CTAS)-Anweisungen für mehrere Tabellen werden normal ausgeführt. Sie scheitern an DML-Fehlern und protokollieren diese nicht.
Wenn Sie versuchen, eine COPY INTO-Anweisung für eine Tabelle mit aktivierter Fehlerprotokollierung auszuführen, wird der Fehler
Error logging is not supported in statement 'COPY INTO'zur Kompilierungszeit zurückgegeben.Fehler, die von der DML-Fehlerprotokollierung nicht unterstützt werden, verursachen, dass die DML-Operation direkt fehlschlägt.
Wenn eine SQL-Anweisung zu einem Kompilierungsfehler führt, endet die Operation, und es werden keine Fehler in der Fehlertabelle protokolliert.
Fehler, die in anderen Pfaden der Datenaufnahme auftreten, wie z. B. COPY und Snowpipe, werden nicht in Fehlertabellen protokolliert. Weitere Informationen Fehlerprotokollierung in der High-Performance-Architektur von Snowpipe Streaming finden Sie unter Fehlerprotokollierung in Snowpipe Streaming mit High-Performance-Architektur.
Die folgenden Hinweise beziehen sich auf die DML-Fehlerprotokollierung und Leistung:
Wenn die DML-Fehlerprotokollierung für eine Basistabelle aktiviert ist, und es keine Fehler in einer DML-Anweisung gibt, die in der Basistabelle ausgeführt wird, wird kein oder nur ein sehr geringer Leistungsunterschied erwartet.
Wenn die DML-Fehlerprotokollierung für eine Basistabelle aktiviert ist, und es Fehler in einer DML-Anweisung gibt, die in der Basistabelle ausgeführt wird, ist zusätzliche Zeit für die Ausführung der DML-Anweisung erforderlich, da die Fehlerinformationen in die Fehlertabelle eingefügt werden.
Wenn eine Basistabelle mit einer zugehörigen Fehlertabelle geklont wird, ist das Verhalten wie folgt:
Das Schema und der Inhalt der Basistabelle werden geklont.
Der Inhalt der Fehlertabelle wird nicht geklont.
Die geklonte Basistabelle hat die ERROR_LOGGING-Eigenschaft aktiviert, wodurch implizit eine leere Fehlertabelle erstellt wird.
Schemaerkennung von Spaltendefinitionen in semistrukturierten Staging-Datendateien¶
Semistrukturierte Daten können Tausende von Spalten enthalten. Snowflake bietet robuste Lösungen für den Umgang mit diesen Daten. Zu den Optionen gehören der direkte Verweis auf die Daten im Cloudspeicher über externe Tabellen, das Laden der Daten in eine einzelne Spalte vom Typ VARIANT oder das Transformieren und Laden der Daten in separate Spalten in einer relationalen Standardtabelle. Alle diese Optionen erfordern Kenntnisse zu den Spaltendefinitionen in den Daten.
Eine andere Lösung beinhaltet die automatische Erkennung des Schemas in einem Satz von semistrukturierten Staging-Datendateien und das Abrufen der Spaltendefinitionen. Die Spaltendefinitionen enthalten die Namen, Datentypen und die Reihenfolge der Spalten in den Dateien. Generieren Sie die Syntax in einem Format, das für die Erstellung von Snowflake-Standardtabellen, externen Tabellen oder Ansichten geeignet ist.
Bemerkung
Diese Feature unterstützt Apache Parquet-, Apache Avro-, ORC-, JSON- und CSV-Dateien.
Diese Unterstützung wird durch die folgenden SQL-Funktionen implementiert:
- INFER_SCHEMA
Erkennt die Spaltendefinitionen in einem Satz von Staging-Datendateien und ruft die Metadaten in einem Format ab, das für die Erstellung von Snowflake-Objekten geeignet ist.
- GENERATE_COLUMN_DESCRIPTION
Generiert eine Liste von Spalten aus einem Satz von Stagingdateien unter Verwendung der INFER_SCHEMA-Funktionsausgabe.
Diese SQL-Funktionen unterstützen sowohl interne als auch externe Stagingbereiche.
Erstellen Sie Tabellen oder externe Tabellen mit den Spaltendefinitionen, die aus einer Menge von Stagingdateien mit der Syntax CREATE TABLE … USING TEMPLATE bzw. CREATE EXTERNAL TABLE … USING TEMPLATE abgeleitet wurden. Die USING TEMPLATE-Klausel akzeptiert einen Ausdruck, der die SQL-Funktion INFER_SCHEMA aufruft, um die Spaltendefinitionen in den Dateien zu erkennen. Sobald die Tabelle erstellt ist, können Sie eine COPY-Anweisung mit der Option MATCH_BY_COLUMN_NAME verwenden, um Dateien direkt in die strukturierte Tabelle zu laden.
Die Schemaerkennung kann auch in Verbindung mit der Tabellenschemaentwicklung verwendet werden, mit der die Struktur von Tabellen automatisch weiterentwickelt wird, um die Struktur neuer Daten in den Datenquellen zu unterstützen.
Alternativen zum Laden von Daten¶
Sie können die folgende Option verwenden, um Ihre Daten im Cloudspeicher abzufragen, ohne sie in Snowflake-Tabellen laden zu müssen.
Externe Tabellen (Data Lake)¶
Externe Tabellen ermöglichen das Abfragen vorhandener Daten, die in einem externen Cloudspeicher gespeichert sind, für Analysen, ohne dass sie zuerst in Snowflake geladen werden müssen. Die Quelle der Wahrheitswerte für die Daten verbleibt im externen Cloudspeicher. In Snowflake über materialisierte Ansichten materialisierte Datasets sind schreibgeschützt.
Diese Lösung ist besonders vorteilhaft für Konten, bei denen große Datenmengen im externen Cloudspeicher gespeichert sind, von denen aber nur ein Teil abgefragt werden soll, zum Beispiel die neuesten Daten. Benutzer können materialisierte Ansichten für Teilmengen dieser Daten erstellen, um die Abfrageleistung zu verbessern.
Verwenden von Amazon S3-kompatiblem Speicher¶
Sie können in Snowflake externe Stagingbereiche und Tabellen erstellen, um auf Speicher in einer Anwendung oder auf einem Gerät zuzugreifen, das mit Amazon S3 kompatibel ist. Mit diesem Feature können Sie Ihre Daten verwalten, steuern und analysieren, unabhängig davon, wo die Daten gespeichert sind. Weitere Informationen dazu finden Sie unter Work with Amazon S3-compatible storage.