はじめに:なぜ「ファイル形式」を知る必要があるの?
Snowflakeにデータを取り込むとき、まず最初に立ちはだかる壁が「
そのファイル、どんな形式?」という問題です。CSV、JSON、Parquet、Avro……名前は聞いたことあるけど違いがいまいちピンとこない、という方も多いのではないでしょうか。
ファイル形式によって
ロード速度・
容量・
扱いやすさ が大きく変わるため、「何となくCSVで」と決めてしまうとあとで後悔することも。この記事では、Snowflakeがサポートする主要なファイル形式の特徴と使い分けを、初心者向けにやさしくまとめます。
サポートされるファイル形式の全体像
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 列に取り込めます。
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の性能とコスト効率を最大限に引き出せますよ!
参考リンク
関連記事