ステップ2。クエリデータ¶
このセクションでは、 SELECT ステートメントを調べて、 JSON データをクエリします。
device_type
を取得します。SELECT src:device_type FROM raw_source;
クエリは次の結果を返します。
+-----------------+ | SRC:DEVICE_TYPE | |-----------------| | "server" | +-----------------+
クエリでは、
src:device_type
表記を使用して、取得する列名と JSON 要素名を指定します。この表記は、なじみのある SQLtable.column
表記に似ています。Snowflakeでは、親列内にサブ列を指定できます。Snowflakeは、これを JSON データに埋め込まれたスキーマ定義から動的に派生させます。詳細については、 半構造化データのクエリ をご参照ください。注釈
列名では大文字と小文字が区別されませんが、 JSON 要素名では大文字と小文字が区別されます。
引用符なしで
device_type
値を取得します。前述のクエリは、引用符で囲まれた JSON データ値を返します。データを特定のデータ型(この例では文字列)にキャストすることで、引用符を削除できます。
このクエリは、オプションでエイリアスを使用して列に名前を割り当てることもできます。
SELECT src:device_type::string AS device_type FROM raw_source;
クエリは次の結果を返します。
+-------------+ | DEVICE_TYPE | |-------------| | server | +-------------+
配列イベントオブジェクト内にネストされた繰り返しの
f
キーを取得します。サンプル JSON データには
events
配列が含まれています。示されているように、配列内の各イベントオブジェクトにはf
フィールドがあります。{ "device_type": "server", "events": [ { "f": 83, .. } { "f": 1000083, .. } ]}
これらのネストされたキーを取得するには、 FLATTEN 関数を使用できます。この関数は、イベントを個別の行にフラット化します。
SELECT value:f::number FROM raw_source , LATERAL FLATTEN( INPUT => SRC:events );
クエリは次の結果を返します。
+-----------------+ | VALUE:F::NUMBER | |-----------------| | 83 | | 1000083 | +-----------------+
value
は、 FLATTEN 関数が返す列の1つです。次のステップでは、 FLATTEN 関数の使用について詳しく説明します。