セミ構造化データ(Semi-structured data)とは、明確な固定スキーマは持たないが、階層構造やタグなどで意味づけがされているデータ形式を指します。構造化データ(リレーショナルなテーブル)と非構造化データ(画像・音声など)の中間に位置します。
Snowflakeは、これらのセミ構造化データを専用のデータ型 VARIANT
を使って柔軟に格納・クエリできます。
📦 Snowflakeがサポートする5つのセミ構造化フォーマット
フォーマット | 概要 |
---|---|
JSON | JavaScript Object Notation。軽量なテキスト形式で、ネストされたオブジェクトや配列を扱える。Web APIなどで一般的。 |
Avro | Apache Avro。スキーマ付きのバイナリフォーマットで、ビッグデータ環境(Kafka, Hadoop)で広く利用。 |
ORC | Optimized Row Columnar。列指向バイナリフォーマットで、Hadoop/Hiveに最適化されている。 |
Parquet | Apache Parquet。列指向のバイナリフォーマットで、圧縮率が高く分析処理に向く。 |
XML | eXtensible Markup Language。タグ構造を持ち、古くからドキュメントや設定ファイルに使われる。 |
🔍 Snowflakeでの利用方法(簡易フロー)
- ファイルをステージ(Stage)に配置
- 例:Amazon S3やSnowflake内部ステージにアップロード
COPY INTO
コマンドでテーブルにロードVARIANT
型カラムに対してデータをロードするFILE_FORMAT
句でフォーマットを指定(例:TYPE = JSON)
- セミ構造化データへのクエリ
:
演算子でJSONのように属性にアクセス可能- 例:
SELECT data:customer.name FROM orders;
📘 補足:VARIANT
, OBJECT
, ARRAY
の型
VARIANT
: JSONやAvroなどのセミ構造化データ全般を格納できる汎用型OBJECT
: JSONのオブジェクト(辞書構造)に相当ARRAY
: JSONの配列に相当