ホーム » データサイエンス » Snowflake » Snowflakeにおけるセミ構造化データとは?

Snowflakeにおけるセミ構造化データとは?

セミ構造化データ(Semi-structured data)とは、明確な固定スキーマは持たないが、階層構造やタグなどで意味づけがされているデータ形式を指します。構造化データ(リレーショナルなテーブル)と非構造化データ(画像・音声など)の中間に位置します。

Snowflakeは、これらのセミ構造化データを専用のデータ型 VARIANT を使って柔軟に格納・クエリできます。


📦 Snowflakeがサポートする5つのセミ構造化フォーマット

フォーマット概要
JSONJavaScript Object Notation。軽量なテキスト形式で、ネストされたオブジェクトや配列を扱える。Web APIなどで一般的。
AvroApache Avro。スキーマ付きのバイナリフォーマットで、ビッグデータ環境(Kafka, Hadoop)で広く利用。
ORCOptimized Row Columnar。列指向バイナリフォーマットで、Hadoop/Hiveに最適化されている。
ParquetApache Parquet。列指向のバイナリフォーマットで、圧縮率が高く分析処理に向く。
XMLeXtensible Markup Language。タグ構造を持ち、古くからドキュメントや設定ファイルに使われる。

🔍 Snowflakeでの利用方法(簡易フロー)

  1. ファイルをステージ(Stage)に配置
    • 例:Amazon S3やSnowflake内部ステージにアップロード
  2. COPY INTOコマンドでテーブルにロード
    • VARIANT型カラムに対してデータをロードする
    • FILE_FORMAT句でフォーマットを指定(例:TYPE = JSON)
  3. セミ構造化データへのクエリ
    • :演算子でJSONのように属性にアクセス可能
    • 例:SELECT data:customer.name FROM orders;

📘 補足:VARIANT, OBJECT, ARRAYの型

  • VARIANT: JSONやAvroなどのセミ構造化データ全般を格納できる汎用型
  • OBJECT: JSONのオブジェクト(辞書構造)に相当
  • ARRAY: JSONの配列に相当

🔗 参考リンク