Schritt 2: Daten abfragen¶
In diesem Schritt werden SELECT-Anweisungen zum Abfragen von JSON-Daten vorgestellt.
Rufen Sie den Wert von
device_type
ab.SELECT src:device_type FROM raw_source;
Die Abfrage liefert das folgende Ergebnis:
+-----------------+ | SRC:DEVICE_TYPE | |-----------------| | "server" | +-----------------+
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-Notationtable.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.
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;
Die Abfrage führt zu folgendem Ergebnis:
+-------------+ | DEVICE_TYPE | |-------------| | server | +-------------+
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 Feldf
, wie unten gezeigt.{ "device_type": "server", "events": [ { "f": 83, .. } { "f": 1000083, .. } ]}
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 );
Die Abfrage gibt das folgende Ergebnis zurück:
+-----------------+ | VALUE:F::NUMBER | |-----------------| | 83 | | 1000083 | +-----------------+
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