Skip to content

Wie man alle Spalten aus einem Stage in Snowflake einfach auswählt

Updated on

Snowflake, eine bahnbrechende Cloud-Datenplattform, verändert die Landschaft des Daten-Engineerings, der Datenlager, der Datenseen und der Datenwissenschaft. Eine der Schlüsselfunktionen von Snowflake ist die Fähigkeit, Stages zu verwalten, eine wichtige Komponente im Datenlager und bei der Datenanalyse. Dieser Artikel führt Sie tief in das Konzept der Stages in Snowflake ein und zeigt Ihnen, wie Sie alle Spalten aus einem Stage auswählen können.

Stages in Snowflake dienen als Zwischenspeicher, in dem Datenfiles gespeichert werden, bevor sie in Tabellen geladen werden. Diese Funktion ist entscheidend für Massendatenoperationen und daher ein wesentliches Thema für Dateningenieure und Analysten, die mit Snowflake arbeiten. Bevor wir uns jedoch mit den Details zur Auswahl aller Spalten aus einem Stage befassen, wollen wir zuerst verstehen, was Snowflake-Stages sind und warum sie wichtig sind.

Möchten Sie Snowflake-Daten einfach visualisieren? RATH (opens in a new tab) bietet Ihnen die einfachste Lösung für KI-gesteuerte Datenvisualisierung und ein umfassendes Paket für automatisierte Datenanalyse!

Sehen Sie sich das folgende Video an, um zu erfahren, wie Sie mit RATH Dateninformationen leicht erkunden können:


Möchten Sie jetzt Ihre Snowflake-Datenbank mit RATH verbinden? Schauen Sie sich die RATH-Dokumentation an, um eine schrittweise Anleitung zur Snowflake-Integration zu erhalten: Step-by-Step-Anleitung zur Snowflake-Integration.

Neben Snowflake unterstützt RATH eine Vielzahl von Datenquellen. Hier sind einige der wichtigsten Datenbanklösungen, mit denen Sie RATH verbinden können: Unterstützte Datenbanken

Interessiert? Probieren Sie RATH jetzt aus auf der RATH-Website (opens in a new tab).

Visualisieren Sie Snowflake-Daten mit RATH (opens in a new tab)

Verständnis der Stages in Snowflake

In Snowflake ist eine Stage ein benanntes Datenbank-Objekt, das angibt, wo Daten-Files zwischengespeichert werden, um das Massenladen und -entladen von Daten in und aus Datenbanktabellen zu vereinfachen. Stages spielen eine entscheidende Rolle im Datenlager und bei der Datenanalyse und dienen als Brücke zwischen Rohdaten-Files und Snowflake-Tabellen.

Es gibt zwei Arten von Stages in Snowflake:

  • Interne Stages: Diese Stages speichern Daten intern in Snowflake-Tabellen. Sie werden automatisch für jede Tabelle und jedes Schema erstellt und können auch explizit erstellt werden.
  • Externe Stages: Diese Stages speichern Daten an einem externen Speicherort, wie z. B. Amazon S3-Buckets, Google Cloud Storage-Buckets oder Microsoft Azure Blob Storage. Externe Stages sind schreibgeschützt, d. h. Sie können keine DML-Operationen auf ihnen ausführen.

Das Verständnis des Unterschieds zwischen diesen beiden Arten von Stages ist entscheidend beim Arbeiten mit Snowflake, da es beeinflusst, wie Sie mit Ihren Daten interagieren können.

Arbeiten mit Metadaten in Snowflake

Snowflake generiert automatisch Metadaten für Files in internen und externen Stages. Diese Metadaten umfassen Dateinamen, Versions-IDs und zugehörige Eigenschaften und bieten zusätzliche Informationen über die Files. Metadaten in Snowflake fungieren als Wegweiser, um den Inhalt eines Datenlagers zu lokalisieren, und sind daher ein wichtiger Aspekt von Datenabfragen und -analysen.

Hier sind die wichtigsten Metadaten-Spalten in Snowflake, die Sie abfragen oder in Tabellen laden können:

  • METADATA$FILENAME: Diese Spalte gibt den Namen der gestageten Datei zurück, zu welcher Zeile sie gehört und den Dateipfad.
  • METADATA$FILE_ROW_NUMBER: Diese Spalte gibt die Zeilennummer für jeden Datensatz in der gestageten Datei zurück.

Wie man gestagete Daten in Snowflake abfragt

Nun, da wir ein solides Verständnis von Snowflake-Stages und Metadaten haben, wollen wir uns damit beschäftigen, wie man gestagete Daten in Snowflake abfragt. Wir führen einen Schritt-für-Schritt-Leitfaden durch, wie man Metadaten von einer externen Stage und einer internen Stage abfragt und zeigen praktische Beispiele, um den Prozess zu veranschaulichen.

Abfragen von Metadaten von einer externen Stage

Beginnen wir mit einem Beispiel, bei dem wir eine CSV-Datei namens 'Cars' in einem externen Amazon S3-Bucket gestaggt haben. Die Datei hat drei Spalten: id, name und location. Hier ist, wie Sie die Metadaten von dieser gestageten Datei abfragen können:

  1. Erstellen Sie eine Snowflake-Stage: Zuerst müssen Sie eine Stage erstellen, die auf den Amazon S3-Bucket zeigt, in dem Ihre CSV-Datei gespeichert ist. Dies können Sie mit dem Befehl CREATE STAGE tun.

  2. Erstellen Sie ein File Format: Als nächstes müssen Sie ein File Format erstellen, das das Format der CSV-Datei beschreibt. Hierfür verwenden Sie den Befehl CREATE FILE FORMAT.

  3. Abfragen der Metadaten: Schließlich können Sie die Metadaten und die regulären Daten-Spalten in der gestageten Datei mit einem SELECT-Statement abfragen. Das SELECT-Statement sollte die Spalten METADATA$FILENAME und METADATA$FILE_ROW_NUMBER sowie die regulären Daten-Spalten enthalten.

Hier ist ein Code-Snippet, das diese Schritte veranschaulicht:

-- Erstellen Sie eine Stage
CREATE OR REPLACE STAGE cars_stage URL = 's3://your_bucket/path/';
 
-- Erstellen Sie ein File Format
CREATE OR REPLACE FILE FORMAT cars_format TYPE = 'CSV' FIELD_DELIMITER = ',';
 
-- Abfragen Sie die Metadaten und Daten-Spalten
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, $1, $2, $3
FROM @cars_stage
(FILE_FORMAT => cars_format);

Diese Abfrage gibt den Dateinamen, die Zeilennummer und die Daten in jeder Spalte für jeden Datensatz in der gestageten CSV-Datei zurück.

Abfragen von Metadaten von einer internen Stage

Das Abfragen von Metadaten von einer internen Stage folgt einem ähnlichen Prozess, aber mit einigen Unterschieden. Betrachten wir ein Beispiel, bei dem wir eine JSON-Datei namens 'Movies' in einer internen Snowflake-Stage gestaggt haben. Die Datei enthält Objekte mit zwei Eigenschaften: Titel und Jahr. Hier ist, wie Sie die Metadaten von dieser gestageten Datei abfragen können:

  1. Erstellen Sie eine Snowflake-Stage: Wie bei der externen Stage müssen Sie zuerst eine Stage erstellen. Da es sich jedoch um eine interne Stage handelt, müssen Sie keine URL angeben.

  2. Erstellen Sie ein File Format: Als nächstes müssen Sie ein File Format erstellen, das das Format der JSON-Datei beschreibt. Dies geschieht mit dem Befehl CREATE FILE FORMAT, wobei der Typ auf 'JSON' gesetzt wird.

  3. Stage die JSON-Datei: Sie können die JSON-Datei von Ihrem lokalen Verzeichnis in die Snowflake-Stage mit dem Befehl PUT staggen.

  4. Abfragen der Metadaten: Schließlich können Sie die Metadaten und die Objekte in der gestageten Datei mit einem SELECT-Statement abfragen. Das SELECT-Statement sollte die Spalten METADATA$FILENAME und METADATA$FILE_ROW_NUMBER sowie die PARSE_JSON-Funktion zur Analyse der JSON-Objekte enthalten.

Hier ist ein Code-Snippet, das diese Schritte veranschaulicht:

-- Eine Stage erstellen
CREATE OR REPLACE STAGE movies_stage;
 
-- Ein Dateiformat erstellen
CREATE OR REPLACE FILE FORMAT movies_format TYPE = 'JSON';
 
-- Die JSON-Datei in die Stage laden
PUT file://path_to_your_file/movies.json @movies_stage;
 
-- Die Metadaten- und Daten-Spalten abfragen
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, PARSE_JSON($1)
FROM @movies_stage
(FILE_FORMAT => movies_format);

Diese Abfrage gibt den Dateinamen, die Zeilennummer und die geparsten JSON-Objekte für jeden Datensatz in der gestageten JSON-Datei zurück.

Fortgeschrittene Techniken zur Abfrage von gestagten Daten

Wenn Sie sich mit dem Abfragen von gestagten Daten in Snowflake wohler fühlen, können Sie fortgeschrittene Techniken erkunden. Sie können zum Beispiel den Befehl 'COPY INTO' verwenden, um die Daten aus einer gestageten Datei in eine Snowflake-Tabelle zu laden. Mit diesem Befehl können Sie Massendatenvorgänge durchführen, die viel schneller sein können als das Einfügen der Daten zeilenweise.

Hier ist ein Beispiel, wie Sie den Befehl 'COPY INTO' verwenden können, um Daten aus einer in einem Amazon S3-Bucket gestageten CSV-Datei in eine Snowflake-Tabelle zu laden:

-- Tabelle erstellen
CREATE OR REPLACE TABLE cars (id INTEGER, name STRING, location STRING);
 
-- Daten aus der gestageten Datei in die Tabelle laden
COPY INTO cars
FROM @cars_stage
FILE_FORMAT => cars_format;

Dieser Befehl lädt alle Daten aus der gestageten CSV-Datei in die Tabelle 'cars'. Anschließend können Sie die Daten in der Tabelle mit regulären SQL-Befehlen abfragen.

FAQs

1. Kann ich in Snowflake gestagete Daten abfragen, ohne sie in eine Tabelle zu laden?

Ja, Sie können gestagete Daten in Snowflake direkt abfragen, ohne sie in eine Tabelle zu laden. Sie können dies mit dem SELECT-Statement tun, wie in den obigen Beispielen gezeigt. Bedenken Sie jedoch, dass das direkte Abfragen großer Mengen von gestageten Daten langsamer sein kann als das Abfragen von Daten, die in eine Tabelle geladen wurden.

2. Welche Arten von Dateien kann ich in Snowflake gestageten?

Snowflake unterstützt eine Vielzahl von Dateitypen, darunter CSV, JSON, Avro, Parquet und ORC. Sie können den Dateityp beim Erstellen eines Dateiformats angeben.

3. Kann ich Daten aus einer lokalen Datei in Snowflake gestageten?

Ja, Sie können Daten aus einer lokalen Datei in Snowflake mit dem Befehl PUT gestageten. Dieser Befehl lädt die lokale Datei in eine interne Snowflake-Staging-Umgebung hoch, von der aus Sie die Daten abfragen oder in eine Tabelle laden können.

Schlussfolgerung

Das Auswählen aller Spalten aus einer Staging-Umgebung in Snowflake ist eine leistungsstarke Operation, die es Ihnen ermöglicht, große Datenmengen effizient abzufragen und zu analysieren. Durch das Verständnis der Konzepte von Staging-Umgebungen und Metadaten in Snowflake sowie das Beherrschen der Techniken zur Abfrage von gestageten Daten können Sie das volle Potenzial Ihrer Daten ausschöpfen und tiefere Einblicke gewinnen. Egal, ob Sie ein Dateningenieur, ein Datenanalyst oder einfach nur jemand sind, der sich für Datenwissenschaft interessiert, das Beherrschen dieser Fähigkeiten wird zweifellos eine wertvolle Ergänzung Ihrer Werkzeugkiste sein.