Schritt 2: Daten abfragen

Im Folgenden sollen die JSON-Daten in der Spalte SRC abgefragt werden.

  1. Beginnen Sie mit der Abfrage des Gerätetyps:

    SELECT src:device_type
      FROM raw_source;
    
    +-----------------+
    | SRC:DEVICE_TYPE |
    |-----------------|
    | "server"        |
    +-----------------+
    

    Wobei:

    Quelle

    Der Spaltenname in der Tabelle RAW_SOURCE.

    Gerätetyp

    Ein Element im JSON-Schema.

    src:Gerätetyp

    Notation, die angibt, welches Element in der Spalte SRC ausgewählt werden soll. Diese Notation ähnelt der bekannten SQL-Notation Tabelle.Spalte. Snowflake ermöglicht es Ihnen, eine Spalte innerhalb der Spalte (d. h. eine Unterspalte) effektiv zu spezifizieren, die dynamisch auf Basis der in die JSON-Daten eingebetteten Schemadefinition abgeleitet wird.

    Bemerkung

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

  2. Die Anführungszeichen, die in der Ausgabe um die Daten gesetzt sind, lassen sich durch Verwenden eines anderen Datentyps beseitigen. In diesem Fall werden wir den Wert als Zeichenfolge ausgeben.

    Gleichzeitig können Sie der Spalte wie jeder normalen Spalte einen Alias geben:

    SELECT src:device_type::string AS device_type
      FROM raw_source;
    
    +-------------+
    | DEVICE_TYPE |
    |-------------|
    | server      |
    +-------------+
    
  3. Sie können verschachtelte Schlüsselwerte abfragen, indem Sie die Werte vereinfachen.

    Lassen Sie uns den sich wiederholenden f-Wert in den Beispieldaten abfragen. Dieser sich wiederholende Wert ist in Ereignisobjekten geschachtelt:

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

    Die SELECT-Anweisung beinhaltet die FLATTEN-Funktion:

    SELECT
      value:f::number
      FROM
        raw_source
      , LATERAL FLATTEN( INPUT => SRC:events );
    
    +-----------------+
    | VALUE:F::NUMBER |
    |-----------------|
    |              83 |
    |         1000083 |
    +-----------------+
    

    Erfahren Sie im nächsten Schritt mehr über die FLATTEN-Funktion.

Nächstes Thema: Schritt 3: Daten vereinfachen