UltKit

CSVをParquetに変換

CSVは手軽に作れますが、クエリには時間がかかります。CSVをアップロードすると、すべてのフィールドに列の型が付いた圧縮済みのApache Parquetファイルが手に入り、読み込む分析ツールでそのまま使えます。

データ変換

またはCSV, TSV, TXT … ファイルをここにドロップ ·

1ファイルあたり最大95 MB· 最大20ファイルまで· 30分後に削除

出力

ファイルは当社のサーバーで処理され、30分後に削除されます。

このツールの使い方

  1. 1

    CSVファイルをアップロード

    同じ列構成のエクスポートファイルを1つ、または最大20個(各95 MBまで)追加します。区切り文字を自動検出にしておけば、カンマ、セミコロン、タブ、パイプに対応できます。

  2. 2

    ヘッダーと日付の設定はそのまま

    1行目を見出しにするをオンにすると、見出し行が列名になります。日付はISO形式になっているため、日付列は1つの統一された形式で書き込まれます。

  3. 3

    Parquetに変換

    Parquetに変換を押して、できた.parquetファイルをpandas、DuckDB、Spark、またはデータウェアハウスに読み込みます。

データチームがCSVをParquetに変換する理由

Parquetは2013年にTwitterとClouderaのエンジニアによって作られました。2010年にGoogleがDremelの論文で示した列指向のレイアウトを土台にしており、2015年にApacheのトップレベルプロジェクトになっています。考え方は単純で、CSVのように表を行ごとに保存するのではなく、1つの列の値をまとめて保存します。40列のうち3列だけが必要なクエリなら、その3列だけを読み込めばよく、似た値が隣り合うので圧縮率も大きく上がります。

そのため、アナリストは読み込む前にエクスポートを変換し、データエンジニアは取引先にCSVではなくParquetを求めます。スキャンしたデータ量で課金されることがあるAmazon AthenaやBigQueryのようなサービスでは、クエリのコストも下がります。また、CSVでは0042が数値なのかコードなのかが分かりませんが、Parquetは列ごとに型を記録するので、次に使うツールが推測する必要はありません。

大きな表ではParquet・CSV・XLSXのどれを選ぶか

ParquetCSVXLSX
列の型をファイルに保存yesnoセルごと
クエリに必要な列だけを読み込めるyesnono
圧縮yesnoyes
テキストエディタで読めるnoyesno
ダブルクリックでExcelで開けるnoyesyes
1ファイルあたりの行数固定の上限なし固定の上限なし1シートあたり1,048,576行

CSVをParquetにすると何が変わるか

メリット

  • 必要な列だけを読み込むので、クエリが速い
  • 保存や移動が楽な、小さなファイル
  • 次のツールが推測せずに読めるスキーマ
  • 日付がISO形式で統一される

注意点

  • スプレッドシートやテキストエディタでは編集できない
  • 数値列に入力ミスが1つあると、列全体がテキストになることがある
  • 人が開く必要があるなら、CSVも残しておく

CSVとParquetの形式の基本情報

CSV

CSV(カンマ区切り値)

CSV は表形式のデータをプレーンテキストで表す形式で、1行が1つの行にあたり、列はカンマで区切ります。コンピューターの初期から使われており、RFC 4180 に記述がありますが、セミコロンやタブで区切る変種や、異なる文字コードを使うものも多くあります。ほとんどの表計算ソフト、データベース、分析ツールで読み込みと書き出しができるため、システム間でデータをやり取りする際の標準的な形式です。CSV に保存されるのは値だけで、数式、書式、複数のシート、データ型は含まれません。

圧縮方式
–
透過
–
アニメーション
–
登場時期
–
CSV 変換

PARQUET

Apache Parquet

Parquet は、2013年に Twitter と Cloudera が作成し、Apache Software Foundation が管理しているオープンソースの列指向ストレージ形式です。データを列ごとに、強力な圧縮と型付きスキーマで保存するため、分析ツールは必要な列だけを読み込めます。データレイクや、Spark、pandas、DuckDB、BigQuery、Snowflake などのツールで標準的に使われています。Parquet ファイルはバイナリのため、テキストエディタや通常の表計算アプリでは開けません。

圧縮方式
可逆
透過
–
アニメーション
–
登場時期
2013 · Apache Software Foundation (from Twitter and Cloudera)
PARQUET 変換

CSVをParquetにするのは、ファイルが人が開くものから、クエリがスキャンするものに変わるときです。たとえば、データレイクに毎日届くエクスポート、アナリストと共有するデータセット、数列ずつ絞り込んで調べるログなどが当てはまります。

CSVの整理は変換のあとではなく、変換の前に行ってください。見出しの名前を直し、末尾の集計行を削除し、各列に1種類の値だけが入っているようにします。元データがCSVではなくデータベースのバックアップなら、まずSQL CSV変換から始めてください。JSONからSQLまで、ほかの変換先はすべてデータ変換のページにあります。

CSVからParquetへの変換に関するよくある質問

ParquetファイルはCSVよりどのくらい小さくなりますか?

データの内容によります。国コード、ステータス、日付のように同じ値が何度も出てくる列はよく圧縮されますが、重複しないIDや自由記述のテキストの列はあまり小さくなりません。Parquetファイルは多くの場合CSVの何分の一かになりますが、確実にお約束できる固定の比率はありません。

変換した.parquetファイルはどのツールで読めますか?

pandas(read_parquet)、Polars、ファイル名を指定して単純なSELECTを実行できるDuckDB、Apache Spark、そしてBigQuery、Snowflake、Amazon Athena、Redshift Spectrumなどのクラウドウェアハウスで読み込めます。多くは、同じ列構成のParquetファイルが入ったフォルダを1つのテーブルとして照会することもできます。

列の型はどのように決まりますか?

各列の値から判断します。整数、小数、日付、真偽値にはそれぞれ対応する型が付き、内容が混在している列はテキストのままになります。02134のような郵便番号など、先頭にゼロがあるコードは変換後に確認し、ゼロを残す必要がある場合はテキストとして保持してください。

同じ構成のCSVファイルを複数まとめて変換できますか?

はい、1回で最大20個まで変換でき、それぞれ個別の.parquetファイルになります。1つのフォルダにまとめておけば、DuckDBやSparkでsales_*.parquetのようなワイルドカードを使ってまとめて読み込めます。

コードを書かずにParquetファイルの中身を確認するには?

ExcelやGoogleスプレッドシートでは.parquetをダブルクリックで開けません。Parquet CSV変換で行形式に戻すか、SQLクエリ1つで済むならDuckDBのコマンドラインを使ってください。