Schritt 2: Daten abfragen

In diesem Schritt werden SELECT-Anweisungen zum Abfragen von JSON-Daten vorgestellt.

  1. Rufen Sie den Wert von device_type ab.

    SELECT src:device_type
      FROM raw_source;
    
    Copy

    Die Abfrage liefert das folgende Ergebnis:

    +-----------------+
    | SRC:DEVICE_TYPE |
    |-----------------|
    | "server"        |
    +-----------------+
    
    Copy

    Die Abfrage verwendet die Notation src:device_type, um den Spaltennamen und den Namen des abzurufenden JSON-Elements anzugeben. Diese Notation ist ähnlich wie die bekannte SQL-Notation table.column. In Snowflake können Sie eine Unterspalte innerhalb einer übergeordneten Spalte angeben, die Snowflake dynamisch aus der in den JSON-Daten eingebetteten Schemadefinition ableitet. Weitere Informationen dazu finden Sie unter Abfragen von semistrukturierten Daten.

    Bemerkung

    Der Spaltenname unterscheidet nicht zwischen Groß- und Kleinschreibung, aber bei den JSON-Elementnamen ist die Groß-/Kleinschreibung relevant.

  2. Rufen Sie den device_type-Wert ohne Anführungszeichen ab.

    Die vorherige Abfrage gibt den JSON-Datenwert in Anführungszeichen zurück. Sie können die Anführungszeichen entfernen, indem Sie die Daten in einen angegebenen Datentyp umwandeln, in diesem Beispiel in eine Zeichenfolge (String).

    Diese Abfrage weist der Spalte optional auch einen Namen unter Verwendung eines Alias zu.

    SELECT src:device_type::string AS device_type
      FROM raw_source;
    
    Copy

    Die Abfrage führt zu folgendem Ergebnis:

    +-------------+
    | DEVICE_TYPE |
    |-------------|
    | server      |
    +-------------+
    
    Copy
  3. Rufen Sie die sich wiederholenden f-Schlüssel ab, die in den Array-Ereignisobjekten verschachtelt sind.

    Die JSON-Beispieldaten enthalten das Array events. Jedes Ereignisobjekt im Array hat das Feld f, wie unten gezeigt.

    {
    "device_type": "server",
    "events": [
      {
        "f": 83,
        ..
      }
      {
        "f": 1000083,
        ..
      }
    ]}
    
    Copy

    Um diese verschachtelten Schlüssel abzurufen, können Sie die Funktion FLATTEN verwenden. Die Funktion vereinfacht die Ereignisse in separaten Zeilen.

    SELECT
      value:f::number
      FROM
        raw_source
      , LATERAL FLATTEN( INPUT => SRC:events );
    
    Copy

    Die Abfrage gibt das folgende Ergebnis zurück:

    +-----------------+
    | VALUE:F::NUMBER |
    |-----------------|
    |              83 |
    |         1000083 |
    +-----------------+
    
    Copy

    Beachten Sie, dass value eine der Spalten ist, die von der FLATTEN-Funktion zurückgegeben wird. Der nächste Schritt enthält weitere Einzelheiten zur Verwendung der FLATTEN-Funktion.

Nächstes Thema: Schritt 3: Daten vereinfachen