Ü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

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 zur Datenübertragungsabrechnung von Snowflake.

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.

Daten-Pipelines für komplexe Transformationen

A data pipeline enables applying complex transformations to loaded data. This workflow generally leverages Snowpipe to load „raw“ data into a staging table and then uses a series of table streams and tasks to transform and optimize the new data for analysis.

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.

Alternativen zum Laden von Daten

Es ist nicht immer erforderlich, Daten in Snowflake zu laden, bevor Abfragen ausgeführt werden.

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.