Daten aus Cloudspeicher laden: Amazon S3¶
Einführung¶
In diesem Tutorial wird gezeigt, wie Sie mithilfe von SQL Daten aus einem Cloudspeicher in Snowflake laden können. Für diese Aufgaben verwenden Sie eine Arbeitsblattvorlage in Snowsight. Sie können wählen, welchen Cloudanbieter Sie verwenden möchten: Amazon S3, Microsoft Azure oder Google Cloud Storage (GCS). Das Arbeitsblatt enthält angepasste SQL-Befehle für die Kompatibilität mit jedem Speichertyp.
Achtung
Das Beispiel in diesem Tutorial ist speziell für Amazon S3 und zeigt SQL-Befehle, die für das Laden von Daten aus einem S3-Bucket vorgesehen sind.
Bemerkung
Snowflake stellt einen minimalen Betrag für den Festplattenspeicher in Rechnung, der für die Beispieldaten in diesem Tutorial benötigt wird. In diesem Tutorial werden Schritte zum Löschen der Tabelle beschrieben, um die Speicherkosten zu minimieren.
Snowflake benötigt ein virtuelles Warehouse, um die Daten laden und Abfragen ausführen zu können. Ein aktives virtuelles Warehouse verbraucht Snowflake-Credits. In diesem Tutorial werden Sie ein 30-tägiges Testkonto verwenden, das kostenlose Credits bietet, sodass Ihnen keine Kosten entstehen.
Lerninhalte¶
In diesem Tutorial lernen Sie Folgendes:
Eine Rolle verwenden, die über die Berechtigungen zum Erstellen und Verwenden der in diesem Tutorial benötigten Snowflake-Objekte verfügt
Ein Warehouse verwenden, um auf Ressourcen zuzugreifen
Eine Datenbank und ein Schema erstellen
Eine Tabelle erstellen
Eine Speicherintegration für Ihre Cloudplattform erstellen
Einen Stagingbereich für Ihre Speicherintegration erstellen
Daten aus dem Stagingbereich in die Tabelle laden
Daten in der Tabelle abfragen
Voraussetzungen¶
Dieses Tutorial setzt Folgendes voraus:
Sie haben einen unterstützten Browser.
Sie haben ein Testkonto. Wenn Sie noch kein Testkonto haben, können Sie sich für einen kostenlosen Testphase anmelden. Sie können eine beliebige Snowflake-Cloudregion wählen.
Sie haben ein Konto, das Sie für das Massenladen von Daten von einem der folgenden Cloudanbieter verwenden können:
AWS S3. Siehe Massenladen aus Amazon S3.
Microsoft Azure Siehe Massenladen aus Microsoft Azure.
Google Cloud Storage. Siehe Massenladen aus Google Cloud Storage.
Bemerkung
Dieses Tutorial ist nur für Benutzer mit einem Testkonto verfügbar. Das Musterarbeitsblatt ist für andere Typen von Konten nicht verfügbar.
Schritt 1: Mit Snowsight anmelden¶
Um über das öffentliche Internet auf Snowsight zuzugreifen, gehen Sie wie folgt vor:
Navigieren Sie in einem unterstützten Webbrowser zu https://app.snowflake.com.
Geben Sie Ihren Kontobezeichner oder Ihre Konto-URL an. Wenn Sie sich bereits zuvor bei Snowsight angemeldet haben, wird Ihnen möglicherweise ein Kontoname angezeigt, den Sie auswählen können.
Melden Sie sich mit den entsprechenden Anmeldeinformationen bei Ihrem Snowflake-Konto an.
Schritt 2: Arbeitsblatt zum Laden von Daten aus dem Cloudspeicher öffnen¶
Sie können Arbeitsblätter zum Schreiben und Ausführen von SQL-Befehlen in Ihrer Datenbank verwenden. Ihr Testkonto hat Zugriff auf eine Arbeitsblattvorlage für dieses Tutorial. Das Arbeitsblatt enthält die SQL-Befehle, die Sie ausführen werden, um Datenbankobjekte zu erstellen, Daten zu laden und die Daten abzufragen. Da es sich um eine Arbeitsblattvorlage handelt, werden Sie aufgefordert, für bestimmte SQL-Parameter eigene Werte einzugeben. Weitere Informationen zu Arbeitsblättern finden Sie unter Erste Schritte mit Arbeitsblättern.
Das Arbeitsblatt für dieses Tutorial ist nicht im Testkonto vorinstalliert. Gehen Sie folgendermaßen vor, um das Arbeitsblatt für dieses Tutorial zu öffnen:
Wenn Sie sich zum ersten Mal bei Ihrem Snowsight-Testkonto anmelden, wählen Sie auf dem Bildschirm Where do you want to start? unter Load data into Snowflake die Option Start.
Wenn Sie den Bildschirm Where do you want to start? verlassen haben, wechseln Sie auf die Registerkarte Worksheets. Wählen Sie im Banner Continue aus.
Klicken Sie auf eine beliebige Stelle im mittleren Bereich Load data from cloud storage.
Die Vorlage [Template] Load data from cloud storage worksheet wird geöffnet, und Ihr Browser sollte ungefähr wie in der folgenden Abbildung aussehen.
Schritt 3: Rolle und Warehouse festlegen¶
Die Rolle, die Sie verwenden, bestimmt die Berechtigungen, die Sie haben. In diesem Tutorial verwenden Sie die Systemrolle ACCOUNTADMIN, damit Sie Objekte in Ihrem Konto anzeigen und verwalten können. Weitere Informationen dazu finden Sie unter Verwenden der ACCOUNTADMIN-Rolle.
Ein Warehouse stellt die Computeressourcen bereit, die Sie zum Ausführen von DML-Operationen, zum Laden von Daten und zum Ausführen von Abfragen benötigen. Zu diesen Ressourcen gehören CPU, Arbeitsspeicher und temporärer Speicher. Ihr Testkonto verfügt über ein virtuelles Warehouse (compute_wh
), das Sie für dieses Tutorial verwenden können. Weitere Informationen dazu finden Sie unter Virtuelle Warehouses.
Um Rolle und Warehouse festzulegen, die im Weiteren verwendet werden sollen, gehen Sie wie folgt vor:
Platzieren Sie den Cursor im geöffneten Arbeitsblatt in der USE ROLE-Zeile.
USE ROLE accountadmin;
Wählen Sie in der rechten oberen Ecke des Arbeitsblatts die Option Run aus.
Bemerkung
In diesem Tutorial führen Sie die SQL-Anweisungen nacheinander aus. Wählen Sie nicht Run All aus.
Platzieren Sie den Cursor in der USE WAREHOUSE-Zeile, und wählen Sie dann Run aus.
USE WAREHOUSE compute_wh;
Schritt 4: Tabelle zum Befüllen einrichten¶
Eine Datenbank ist ein Repository für Ihre Daten. Die Daten werden in Tabellen gespeichert, die Sie verwalten und abfragen können. Ein Schema ist eine logische Gruppierung von Datenbankobjekten wie Tabellen und Ansichten. Ein Schema kann beispielsweise die für eine bestimmte Anwendung erforderlichen Datenbankobjekte enthalten. Weitere Informationen dazu finden Sie unter Datenbanken, Tabellen und Ansichten – Überblick.
Um eine Datenbank, ein Schema und eine Tabelle zu erstellen, die Sie befüllen können, gehen Sie wie folgt vor:
Platzieren Sie den Cursor im geöffneten Arbeitsblatt in der Zeile CREATE OR REPLACE DATABASE, geben Sie einen Namen für Ihre Datenbank und optional einen Kommentar ein, und wählen Sie dann Run aus. Beispiel:
CREATE OR REPLACE DATABASE cloud_data_db COMMENT = 'Database for loading cloud data';
Platzieren Sie den Cursor in der Zeile CREATE OR REPLACE SCHEMA, geben Sie einen Namen für Ihr Schema und optional einen Kommentar ein, und wählen Sie dann Run aus. Beispiel:
CREATE OR REPLACE SCHEMA cloud_data_db.s3_data COMMENT = 'Schema for tables loaded from S3';
Platzieren Sie den Cursor in den Zeile CREATE OR REPLACE TABLE-Zeilen, vervollständigen Sie die Tabellendefinition, fügen Sie optional einen Kommentar hinzu, und wählen Sie Run aus. Die folgende Tabelle enthält zum Beispiel sechs Spalten:
CREATE OR REPLACE TABLE cloud_data_db.s3_data.calendar ( full_date DATE ,day_name VARCHAR(10) ,month_name VARCHAR(10) ,day_number VARCHAR(2) ,full_year VARCHAR(4) ,holiday BOOLEAN ) COMMENT = 'Table to be loaded from S3 calendar data file';
Um zu bestätigen, dass die Tabelle erfolgreich erstellt wurde, platzieren Sie den Cursor in der Zeile SELECT, und wählen Sie dann Run aus.
SELECT * FROM cloud_data_db.s3_data.calendar;
Die Ausgabe zeigt die Spalten der von Ihnen erstellten Tabelle an. Derzeit enthält die Tabelle keine Zeilen.
Schritt 5: Speicherintegration erstellen¶
Bevor Sie Daten aus einem Cloudspeicher laden können, müssen Sie eine Speicherintegration konfigurieren, die für Ihren Cloudanbieter spezifisch ist. Das folgende Beispiel gilt für Amazon S3-Speicher.
Speicherintegrationen sind benannte First-Class-Snowflake-Objekte, bei denen keine expliziten Cloudanbieter-Anmeldeinformationen wie geheime Schlüssel oder Zugriffstoken übergeben werden müssen. Integrationsobjekte speichern eine AWS Identity and Access Management (IAM)-Benutzer-ID.
Um eine Speicherintegration für Amazon S3 zu erstellen, gehen Sie wie folgt vor:
Verwenden Sie die AWS-Managementkonsole, um eine IAM-Richtlinie und eine IAM-Rolle zu erstellen. Diese Ressourcen bieten sicheren Zugang zu Ihrem S3-Bucket zum Laden von Daten. Sie benötigen diese Ressourcen, um eine Speicherintegration in Snowflake zu erstellen. Führen Sie nach der Anmeldung bei der Konsole die Schritte 1 und 2 unter Option 1: Konfigurieren einer Snowflake-Speicherintegration für Zugriff auf Amazon S3 aus.
Platzieren Sie den Cursor im geöffneten Arbeitsblatt in den CREATE OR REPLACE STORAGE INTEGRATION-Zeilen, definieren Sie die gewünschten Parameter, und wählen Sie Run aus. Beispiel:
CREATE OR REPLACE STORAGE INTEGRATION s3_data_integration TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'S3' STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::631373164455:role/tutorial_role' ENABLED = TRUE STORAGE_ALLOWED_LOCATIONS = ('s3://snow-tutorial-bucket/s3data/');
Setzen Sie STORAGE_AWS_ROLE_ARN auf den eindeutigen Bezeichner der IAM-Rolle, die Sie zuvor erstellt haben. Sie finden diesen Wert in der AWS-Managementkonsole unter IAM > Roles.
Platzieren Sie den Cursor in der Zeile DESCRIBE INTEGRATION, geben Sie den Namen der von Ihnen erstellten Speicherintegration an, und wählen Sie Run aus.
DESCRIBE INTEGRATION s3_data_integration;
Dieser Befehl ruft den ARN und die externe ID des AWS-IAM-Benutzers ab, der automatisch für Ihr Snowflake-Konto erstellt wurde. Sie verwenden diese Werte, um die Berechtigungen für Snowflake in der AWS-Managementkonsole zu konfigurieren.
Die Ausgabe für diesen Befehl sollte in etwa wie folgt aussehen:
Platzieren Sie den Cursor in der Zeile SHOW INTEGRATIONS, und wählen Sie Run aus. Dieser Befehl gibt Informationen über die von Ihnen erstellte Speicherintegration zurück.
SHOW INTEGRATIONS;
Die Ausgabe für diesen Befehl sollte in etwa wie folgt aussehen:
Verwenden Sie die AWS-Managementkonsole, um die Berechtigungen für den IAM-Benutzer (der Benutzer, der automatisch für Ihr Testkonto erstellt wurde) für den Zugriff auf Speicher-Buckets zu konfigurieren. Führen Sie Schritt 5 unter Option 1: Konfigurieren einer Snowflake-Speicherintegration für Zugriff auf Amazon S3 aus.
Wenn Sie Azure oder GCS verwenden, finden Sie die entsprechenden Konfigurationsverfahren unter Massenladen aus Microsoft Azure bzw. Massenladen aus Google Cloud Storage.
Schritt 6: Stagingbereich erstellen¶
Ein Stagingbereich ist ein Speicherort, der Datendateien bereithält, um sie in eine Snowflake-Datenbank zu laden. In diesem Tutorial wird ein Stagingbereich erstellt, der Daten aus einem bestimmten Typ von Cloudspeicher laden kann, z. B. aus einem S3-Bucket.
Um einen Stagingbereich zu erstellen, gehen Sie wie folgt vor:
Platzieren Sie den Cursor im geöffneten Arbeitsblatt in den CREATE OR REPLACE STAGE-Zeilen, geben Sie einen Namen, die von Ihnen erstellte Speicherintegration, die Bucket-URL und das korrekte Dateiformat an, und wählen Sie dann Run aus. Beispiel:
CREATE OR REPLACE STAGE cloud_data_db.s3_data.s3data_stage STORAGE_INTEGRATION = s3_data_integration URL = 's3://snow-tutorial-bucket/s3data/' FILE_FORMAT = (TYPE = CSV);
Geben Sie Informationen zu dem von Ihnen erstellten Stagingbereich zurück:
SHOW STAGES;
Die Ausgabe für diesen Befehl sollte in etwa wie folgt aussehen:
Schritt 7: Daten aus dem Stagingbereich laden¶
Laden Sie mit dem Befehl COPY INTO <Tabelle> Daten aus dem von Ihnen erstellten Stagingbereich in die Tabelle. Weitere Informationen zum Laden von Daten aus S3-Buckets finden Sie unter Kopieren von Daten aus einem S3-Stagingbereich.
Um die Daten in die Tabelle zu laden, platzieren Sie den Cursor in die COPY INTO-Zeilen, geben Sie den Tabellennamen, den von Ihnen erstellten Stagingbereich und die Namen der zu ladenden Dateien an, und wählen Sie dann Run aus. Beispiel:
COPY INTO cloud_data_db.s3_data.calendar FROM @cloud_data_db.s3_data.s3data_stage FILES = ('calendar.txt');
Die Ausgabe sollte ungefähr wie in der folgenden Abbildung aussehen.
Schritt 8. Tabelle abfragen¶
Jetzt, wo die Daten geladen sind, können Sie Abfragen auf der Tabelle calendar
ausführen.
Um eine Abfrage im geöffneten Arbeitsblatt auszuführen, markieren Sie die Zeile oder die Zeilen des SELECT-Befehls, und wählen Sie Run aus. Führen Sie zum Beispiel folgende Abfrage aus:
SELECT * FROM cloud_data_db.s3_data.calendar;
Die Ausgabe sollte ungefähr wie in der folgenden Abbildung aussehen.
Schritt 9. Bereinigung, Zusammenfassung und zusätzliche Ressourcen¶
Herzlichen Glückwunsch! Sie haben dieses Tutorial für Testkonten erfolgreich abgeschlossen.
Nehmen Sie sich nun ein paar Minuten Zeit, um noch einmal eine kurze Zusammenfassung und die wichtigsten Punkte des Tutorials zu lesen. Möglicherweise sollten Sie auch eine Bereinigung des Datenspeichers in Betracht ziehen, indem Sie alle Objekte, die Sie im Tutorial erstellt haben, wieder löschen. Sie können zum Beispiel die von Ihnen erstellte und geladene Tabelle löschen:
DROP TABLE calendar;
Wenn sie nicht mehr benötigt werden, können Sie auch die anderen von Ihnen erstellten Objekte, wie Speicherintegration, Stagingbereich, Datenbank und Schema, löschen. Weitere Details dazu finden Sie unter Befehle der DDL (Datendefinitionssprache).
Zusammenfassung und Kernpunkte¶
Zusammenfassend haben Sie eine für dieses Tutorial vorinstallierte Snowsight-Arbeitsblattvorlage verwendet, um die folgenden Schritte auszuführen:
Rolle und Warehouse zur Verwendung im Tutorial festlegen
Eine Datenbank, ein Schema und eine Tabelle erstellen
Eine Speicherintegration erstellen und Berechtigungen für den Cloudspeicher konfigurieren
Einen Stagingbereich erstellen und Daten aus dem Stagingbereich in die Tabelle laden
Abfragen auf den Daten ausführen
Im Folgenden sind noch einmal die wichtigsten Punkte aufgeführt, die Sie beim Laden und Abfragen von Daten beachten sollten:
Sie benötigen die erforderlichen Berechtigungen, um Objekte in Ihrem Konto zu erstellen und zu verwalten. In diesem Tutorial verwenden Sie die Systemrolle ACCOUNTADMIN für diese Berechtigungen.
Diese Rolle wird normalerweise nicht zum Erstellen von Objekten verwendet. Wir empfehlen stattdessen, eine Rollenhierarchie zu erstellen, die auf die Geschäftsfunktionen in Ihrer Organisation abgestimmt ist. Weitere Informationen dazu finden Sie unter Verwenden der ACCOUNTADMIN-Rolle.
Sie benötigen ein Warehouse für die Ressourcen, die zum Erstellen und Verwalten von Objekten und zum Ausführen von SQL-Befehlen erforderlich sind. In diesem Tutorial wird das Warehouse
compute_wh
verwendet, das für Ihr Testkonto zur Verfügung gestellt wird.Sie haben eine Datenbank zum Speichern der Daten und ein Schema zum logischen Gruppieren der Datenbankobjekte erstellt.
Sie haben eine Speicherintegration und einen Stagingbereich zum Laden von Daten aus einer CSV-Datei erstellt, die in einem AWS S3-Bucket gespeichert ist.
Nachdem die Daten in Ihre Datenbank geladen wurden, haben Sie sie mit einer SELECT-Anweisung abgefragt.
Nächste Schritte¶
Setzen Sie die Einarbeitung in Snowflake mithilfe der folgenden Ressourcen fort:
Führen Sie die anderen von Snowflake bereitgestellten Tutorials durch:
Machen Sie sich mit den wichtigsten Konzepten und Features von Snowflake sowie den SQL-Befehlen zum Befüllen von Tabellen aus Cloudspeicher vertraut:
Probieren Sie die „Tasty Bytes“-Quickstarts von Snowflake aus: