Voraussetzungen

Das Tutorial setzt Folgendes voraus:

  • Sie haben ein Snowflake-Konto, das für die Verwendung von Amazon Web Services (AWS) konfiguriert ist, und Sie haben einen Benutzer mit einer Rolle, die die erforderlichen Berechtigungen zum Erstellen von Datenbank-, Tabellen- und virtuellen Warehouse-Objekten erteilt.

  • Sie haben SnowSQL (CLI-Client) installiert.

Das Snowflake in 20 Minuten-Tutorial enthält die entsprechende Schritt-für-Schritt-Anleitung, um diese Anforderungen zu erfüllen.

Snowflake stellt Beispieldatendateien in einem öffentlichen Amazon S3-Bucket zur Verwendung in diesem Tutorial bereit. Bevor Sie beginnen, müssen Sie jedoch eine Datenbank, einige Tabellen, ein virtuelles Warehouse und einen externen Stagingbereich für dieses Tutorial erstellen. Dies sind die grundlegenden Snowflake-Objekte, die für die meisten Snowflake-Aktivitäten benötigt werden.

Allgemeine Informationen zu der Beispieldatendatei

In diesem Tutorial verwenden Sie die folgenden JSON-Beispieldaten für Anwendungsereignisse, die in einem öffentlichen S3 Bucket bereitgestellt werden.

{
"device_type": "server",
"events": [
  {
    "f": 83,
    "rv": "15219.64,783.63,48674.48,84679.52,27499.78,2178.83,0.42,74900.19",
    "t": 1437560931139,
    "v": {
      "ACHZ": 42869,
      "ACV": 709489,
      "DCA": 232,
      "DCV": 62287,
      "ENJR": 2599,
      "ERRS": 205,
      "MXEC": 487,
      "TMPI": 9
    },
    "vd": 54,
    "z": 1437644222811
  },
  {
    "f": 1000083,
    "rv": "8070.52,54470.71,85331.27,9.10,70825.85,65191.82,46564.53,29422.22",
    "t": 1437036965027,
    "v": {
      "ACHZ": 6953,
      "ACV": 346795,
      "DCA": 250,
      "DCV": 46066,
      "ENJR": 9033,
      "ERRS": 615,
      "MXEC": 0,
      "TMPI": 112
    },
    "vd": 626,
    "z": 1437660796958
  }
],
"version": 2.6
}
Copy

Die Daten repräsentieren Beispielereignisse, die von Anwendungen auf S3 hochgeladen werden. Eine Vielzahl von Geräten und Anwendungen wie Server, Handys und Browser veröffentlichen Ereignisse. In einem allgemeinen Datenerfassungsszenario sammelt ein skalierbarer Web-Endpunkt POST-Daten aus verschiedenen Quellen und schreibt diese in ein Warteschlangensystem. Ein Ingest-Service/Dienstprogramm schreibt die Daten dann in einen S3-Bucket, von dem aus Sie die Daten in Snowflake laden können.

Die Beispieldaten veranschaulichen die folgenden Konzepte:

  • Anwendungen können entscheiden, Ereignisse in Batches zu gruppieren. Ein Batch ist ein Container, der Header-Informationen enthält, die für alle Ereignisse im Batch gelten. Das obige JSON-Beispiel ist ein Batch mit zwei Ereignissen mit gemeinsamen Header-Informationen: device_type und version, die diese Ereignisse generiert haben.

  • Amazon S3 unterstützt die Verwendung von Ordnern, um Buckets zu organisieren. Anwendungen können dieses Feature nutzen, um Ereignisdaten zu partitionieren. Partitionierungsschemas identifizieren typischerweise Details, wie die Anwendung oder den Speicherort, die das Ereignis generiert haben, zusammen mit dem Datum, an dem das Ereignis in S3 geschrieben wurde. Mit einem solchen Partitionierungsschema kann ein beliebiger Teil der partitionierten Daten mit einem einzigen COPY-Befehl in Snowflake kopiert werden. So können Sie beispielsweise bei der Erstbefüllung von Tabellen Ereignisdaten stunden-, daten-, monats- oder jahresweise kopieren.

    Beispiel:

    s3://bucket_name/application_a/2016/07/01/11/

    s3://bucket_name/application_b/location_c/2016/07/01/14/

    Beachten Sie, dass mit application_a, application_b, location_c usw. die Angaben zur Quelle aller Daten im Pfad identifiziert werden können. Die Daten können nach dem Datum organisiert werden, an dem sie geschrieben wurden. Ein optionales 24-Stunden-Verzeichnis reduziert die Datenmenge in jedem Verzeichnis.

    Bemerkung

    S3 sendet eine Verzeichnisliste mit allen von Snowflake verwendeten COPY-Anweisungen, sodass die Reduzierung der Anzahl der Dateien in jedem Verzeichnis die Leistung Ihrer COPY-Anweisungen verbessert. Sie können sogar erwägen, alle 10-15 Minuten pro Stunde einen Ordner zu erstellen.

    Die im S3-Bucket bereitgestellten Beispieldaten verwenden ein ähnliches Partitionierungsschema. In einem COPY-Befehl geben Sie einen bestimmten Ordnerpfad zum Kopieren von Ereignisdaten an.

Erstellen von Datenbank, Tabelle, Warehouse und externem Stagingbereich

Führen Sie die folgenden Anweisungen aus, um eine Datenbank, eine Tabelle, ein virtuelles Warehouse und einen externen Stagingbereich zu erstellen, die für dieses Tutorial benötigt werden. Nachdem Sie das Tutorial abgeschlossen haben, können Sie diese Objekte wieder löschen.

CREATE OR REPLACE DATABASE mydatabase;

USE SCHEMA mydatabase.public;

CREATE OR REPLACE TABLE raw_source (
  SRC VARIANT);

CREATE OR REPLACE WAREHOUSE mywarehouse WITH
  WAREHOUSE_SIZE='X-SMALL'
  AUTO_SUSPEND = 120
  AUTO_RESUME = TRUE
  INITIALLY_SUSPENDED=TRUE;

USE WAREHOUSE mywarehouse;

CREATE OR REPLACE STAGE my_stage
  URL = 's3://snowflake-docs/tutorials/json';
Copy

Beachten Sie Folgendes:

  • Die CREATE DATABASE-Anweisung erstellt eine Datenbank. Die Datenbank enthält automatisch ein Schema namens „public“.

  • Die Anweisung USE SCHEMA gibt eine aktive Datenbank und ein aktives Schema für die aktuelle Benutzersitzung an. Die Angabe einer Datenbank ermöglicht es Ihnen nun, Ihre Arbeit in dieser Datenbank auszuführen, ohne den Namen jedes Mal angeben zu müssen, wenn er angefordert wird.

  • Die Anweisung CREATE TABLE erstellt eine Zieltabelle für JSON-Daten.

  • Die CREATE WAREHOUSE-Anweisung erstellt ein Warehouse, das zunächst angehalten ist. Die Anweisung legt auch AUTO_RESUME = true fest, wodurch das Warehouse automatisch gestartet wird, wenn Sie SQL-Anweisungen ausführen, die Computeressourcen benötigen. Die Anweisung USE WAREHOUSE legt das von Ihnen erstellte Warehouse als aktives Warehouse für die aktuelle Benutzersitzung fest.

  • Die Anweisung CREATE STAGE erstellt einen externen Stagingbereich, der auf den S3-Bucket verweist, der die Beispieldatei für dieses Tutorial enthält.

Nächstes Thema: Schritt 1: Daten in die Zieltabelle kopieren