ステップ2。クエリデータ

SRC 列の JSON データをクエリしてみましょう。

  1. デバイスタイプのクエリから始めます。

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

    条件:

    src

    RAW_SOURCE テーブルの列名。

    デバイスタイプ

    JSON スキーマの要素。

    src:デバイスタイプ

    SRC 列のどの要素を選択するかを示す表記。この表記は、おなじみの SQL テーブル. 表記に似ています。Snowflakeでは、 JSON データに埋め込まれたスキーマ定義に基づいて動的に得られる列(つまり、サブ列)内の列を効果的に指定できます。

    注釈

    列名は大文字と小文字を区別しませんが、要素名、または キー は大文字と小文字を区別します。

  2. 出力内のデータを囲む引用符を削除するには、データを別のデータ型としてキャストします。この場合、値を文字列としてキャストします。

    同時に、通常の列と同様に、列にエイリアスを指定できます。

    SELECT src:device_type::string AS device_type
      FROM raw_source;
    
    +-------------+
    | DEVICE_TYPE |
    |-------------|
    | server      |
    +-------------+
    
  3. 値をフラット化することで、ネストされたキー値をクエリできます。

    サンプルデータの繰り返し f 値をクエリしてみましょう。この繰り返し値は、イベントオブジェクト内にネストされます。

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

    SELECT ステートメントには FLATTEN 関数が含まれます。

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

    次のステップで FLATTEN 関数の詳細をご参照ください。

次: ステップ3。データをフラット化する