NDJSON を CSV に変換

ここで NDJSON を CSV に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 作り直し CSVはNDJSONとは仕組みが違います。非可逆コーデックのような段階的な劣化ではありません。CSVが表現できるものは忠実に再現され、対応するものがないものはまったく残りません。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。
  • 知っておきたいこと 入れ子のオブジェクトは平らにされて列になります。深く入れ子になったデータは形を失います。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

行数はあらかじめ分かる

NDJSON は 1 行に 1 レコードを保証するので、得られる行数はファイルの行数そのものです。行の中の改行は JSON の中でエスケープされているので、データの側から行が増えることはありません。

ファイルが 41 万 2 千行なら 41 万 2 千行と見出しの行が返ります。出力がそれより少なければ、入力側に問題があったということです。空行は末尾のものを含めて読み飛ばされます。

行ごとに違う項目が、表を横に広げる

NDJSON の各行は独立していて、2 行目が 1 行目と同じキーを持つ義務はありません。リクエストとエラー、ジョブ完了のように複数の種類のイベントを 1 つのファイルに吐き出すログはよくあります。

この変換はファイル全体で見つかったすべてのキーに列を用意し、なかった行のセルは空にします。結果は疎な表になりがちで、40 列のうち各行が使うのは 8 列、ということも起こります。イベントの種類でフィルターしてから変換するほうが読みやすい表になります。

壊れた行は自分の行番号を教えてくれる

1 行でも正しい JSON でなければ、変換はそこで止まり「この行は正しい JSON として読めません — 3 行目」のように行番号を示します。黙って読み飛ばすより有用な設計です。

ログの壊れた行は多くの場合、書き込み処理が途中で終わったことを意味します。行番号が分かれば末尾を削るか直すかは一つのコマンドで済み、何を失ったかもはっきりします。

入れ子のフィールドはドット区切りの列名になる

構造化ログは request オブジェクトの method や user オブジェクトの id のように入れ子になっていることが多く、それらは request.method、user.id のようにパスを名前にした列に展開されます。

1 段から 2 段の入れ子はたいてい扱いやすい表になります。もっと深い構造や、丸ごとのペイロードを含む行は列数が急激に増えるので、興味のある部分木だけを先に取り出すほうが良い表になります。

型は CSV に持ち込めない

数値は数字として、真偽値は true/false として、null は空のセルとして正確に書かれますが、CSV には型という概念がなく、開いたソフトが何であるかを推測します。

Excel はしばしば見当違いの推測をします。先頭のゼロが消え、日付らしきものは日付になり、長い数字の ID は末尾の桁を失います。識別子の列をテキストとして取り込むか、XLSX に変換して型を明示するのが確実です。

配列にはちょうど良い列がない

タグやエラーのフレームのような配列を持つ行は tags.0、tags.1 のように番号付きの列に展開され、ファイル中で最も長い配列に合わせた列数になり、その多くは空です。

配列が付随的な情報なら、変換の前に 1 つの文字列に結合したほうが読みやすい列になります。配列そのものが分析の対象なら、1 要素につき 1 行になるよう先に展開してください。

ログはブラウザーの外に出ない

この変換はページに読み込まれた JavaScript だけで行われ、ファイルを運ぶ通信は一切発生しません。アカウントも 1 日の上限もなく、ネットワークタブで確認できます。

本番のログには IP アドレス、セッション識別子、リクエストのパス、しばしばトークン付きのクエリ文字列まで含まれます。それをどこかの変換サービスに送ることこそ、多くの組織で許されない行為です。

どれくらいの大きさまで扱えるか

無料枠は 100 MB までです。数十メガバイトなら問題なく処理でき、数百メガバイトになるとブラウザーのタブが重くなり始めます。

NDJSON は改行の位置ならどこで分割しても安全な形式なので、大きなログは split で分けてから変換しても構いません。数ギガバイトの規模なら、ストリーミング処理の道具のほうが適しています。

NDJSON を CSV に変換する手順

  1. お手元の NDJSON ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に CSV を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった CSV ファイル をダウンロードします。

NDJSON と CSV——何が変わるか

NDJSONとCSVの比較
NDJSONCSV
正式名称Newline-Delimited JSONComma-Separated Values
拡張子.ndjson, .jsonl.csv
メディアタイプapplication/x-ndjsontext/csv
最初の公開20131972
仕様RFC 4180
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なし対応なし
代わりに検討される形式JSONXLSX, JSON, Parquet

結果を開く

pandasは NDJSON と CSV のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

どちらの形式が何のためのものか

CSV は 1972 年から使われています。規定は RFC 4180 です。Microsoft Excel、LibreOffice Calc、pandasがこの形式を読めます。

CSV は 1972 年、NDJSON は 2013 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。

NDJSON から CSV:よくある質問

NDJSON ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

NDJSON から CSV への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

NDJSON を CSV に変換すると品質は落ちますか。

NDJSON と CSV は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 入れ子のオブジェクトは平らにされて列になります。深く入れ子になったデータは形を失います。

できあがった CSV ファイル を開くのに、何かインストールが必要ですか。

変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん Comma-Separated Values を表示するのに使っているソフトが必要です。

これらのフォーマットについて