Übersicht zum Laden von Daten

Dieses Thema bietet einen Überblick über die wichtigsten Optionen zum Laden von Daten in Snowflake.

Unter diesem Thema:

Unterstützte Dateispeicherorte

Snowflake bezeichnet den Speicherort von Datendateien im Cloudspeicher als Stagingbereich. Der Befehl COPY INTO <Tabelle>, der sowohl für Massen- als auch für kontinuierliche Datenladevorgänge (z. B. Snowpipe) verwendet wird, unterstützt Cloudspeicherkonten, die von Ihrer Geschäftseinheit verwaltet werden (d. h. externer Stagingbereich), sowie Cloudspeicher, der in Ihrem Snowflake-Konto enthalten ist (d. h. interner Stagingbereich).

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 Ihre Datendateien die gleiche Anzahl und Reihenfolge der Spalten aufweisen wie Ihre 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 Staging-Tabellen zu laden und für Transformation und Optimierung der Daten zu sorgen.

Datenpipelines für komplexe Transformationen

Eine Daten-Pipeline ermöglicht das Anwenden komplexer Transformationen auf geladene Daten. Dieser Workflow nutzt Snowpipe im Allgemeinen, um „Rohdaten“ in eine Stagingtabelle zu laden, und verwendet dann eine Reihe von Tabellenstreams und Aufgaben, um die neuen Daten für Analysen zu transformieren und zu optimieren.

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.

Erkennung 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.

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 externe Stagingbereiche und externe Tabellen auf Software und Geräten, vor Ort (on-premises) oder in einer privaten Cloud bereitstellen, die mit der Amazon S3-API hoch kompatibel sind. Mit diesem Feature lassen sich Ihre Daten einfacher und effizienter verwalten, steuern und analysieren, unabhängig davon, wo die Daten physisch gespeichert sind. Weitere Informationen dazu finden Sie unter Verwenden von Amazon S3-kompatiblem Speicher.