Snowflake対応ファイル形式まとめ|CSV/JSON/Parquet/Avroの違い

Snowflake対応ファイル形式まとめ|CSV/JSON/Parquet/Avroの違い Snowflake

はじめに:なぜ「ファイル形式」を知る必要があるの?

Snowflakeにデータを取り込むとき、まず最初に立ちはだかる壁が「そのファイル、どんな形式?」という問題です。CSV、JSON、Parquet、Avro……名前は聞いたことあるけど違いがいまいちピンとこない、という方も多いのではないでしょうか。 ファイル形式によって ロード速度容量扱いやすさ が大きく変わるため、「何となくCSVで」と決めてしまうとあとで後悔することも。この記事では、Snowflakeがサポートする主要なファイル形式の特徴と使い分けを、初心者向けにやさしくまとめます。
Snowflake対応ファイル形式の全体像を示す解説イラストでCSV・JSON・Parquet・Avroの位置づけを構造化と半構造化に分類

サポートされるファイル形式の全体像

Snowflakeでロード/アンロードできる代表的な形式は次のとおりです。
  • 構造化データ:CSV(区切り文字つきテキスト)
  • 半構造化データ:JSON / Avro / ORC / Parquet / XML
  • 非構造化データ:画像・PDFなど(ステージで保管)
取り込み方の全体像はSnowflakeデータロードの全体像で解説しているので、合わせて読むと理解が深まります。

① CSV:いちばん身近なテキスト形式

カンマ区切りでおなじみのCSV。Excelやどんなツールでも開けるのが最大の強みです。一方で 型情報を持たない圧縮効率が低いため、大量データには不向き。区切り文字や改行コード、引用符の扱いでハマりがちなのも要注意ポイントです。

② JSON:Webやログとの相性ばつぐん

APIレスポンスやアプリログでよく使われるJSON。ネストした構造をそのまま表現できるのが魅力で、Snowflakeでは VARIANT 型に丸ごと格納してSQLで掘り下げられます。半面、テキストベースなのでサイズは大きめです。

③ Parquet:分析にいちばん強い列指向フォーマット

列ごとにまとめて格納する 列指向(カラムナ) 形式で、必要な列だけを高速に読めるのが特徴。圧縮効率も高く、ビッグデータ分析の事実上の標準と言える存在です。Snowflake内部のマイクロパーティションとも相性◎。

④ Avro:スキーマ進化に強い行指向バイナリ

Kafkaなどストリーミング基盤で人気の形式。スキーマ情報をファイル内に持つので、後からカラムが増えても壊れにくいのが強みです。Snowflakeでは半構造化データとして VARIANT 列に取り込めます。
Snowflakeファイル形式ごとの特徴を比較した一覧図で列指向Parquetやスキーマ進化に強いAvroの使い分けを整理

FILE FORMATオブジェクトを作ってみよう

Snowflakeでは、形式ごとの設定を FILE FORMATオブジェクト として保存しておけます。COPY INTOでデータ投入するときに使い回せるので便利です。
-- CSV用
CREATE OR REPLACE FILE FORMAT my_csv_format
  TYPE = CSV
  FIELD_DELIMITER = ','
  SKIP_HEADER = 1
  NULL_IF = ('NULL', '')
  FIELD_OPTIONALLY_ENCLOSED_BY = '"';

-- Parquet用
CREATE OR REPLACE FILE FORMAT my_parquet_format
  TYPE = PARQUET;

-- JSON用
CREATE OR REPLACE FILE FORMAT my_json_format
  TYPE = JSON
  STRIP_OUTER_ARRAY = TRUE;

使い分けの目安

  • とりあえず手軽に → CSV(小規模・人が確認したい)
  • APIやログを生のまま → JSON
  • 分析パフォーマンス重視・大量データ → Parquet
  • スキーマが頻繁に変わるストリーム → Avro
定期的に大量ファイルを取り込むなら、ステージに置いてSnowpipeで自動取り込みする構成がおすすめです。

まとめ

CSVは万能、JSONは柔軟、Parquetは速い、Avroは進化に強い——それぞれに役割があります。データの量や用途に合わせて最適な形式を選ぶことで、Snowflakeの性能とコスト効率を最大限に引き出せますよ!

参考リンク

関連記事