分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ここで NDJSON を CSV に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
NDJSON から CSV
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 段の入れ子はたいてい扱いやすい表になります。もっと深い構造や、丸ごとのペイロードを含む行は列数が急激に増えるので、興味のある部分木だけを先に取り出すほうが良い表になります。
数値は数字として、真偽値は true/false として、null は空のセルとして正確に書かれますが、CSV には型という概念がなく、開いたソフトが何であるかを推測します。
Excel はしばしば見当違いの推測をします。先頭のゼロが消え、日付らしきものは日付になり、長い数字の ID は末尾の桁を失います。識別子の列をテキストとして取り込むか、XLSX に変換して型を明示するのが確実です。
タグやエラーのフレームのような配列を持つ行は tags.0、tags.1 のように番号付きの列に展開され、ファイル中で最も長い配列に合わせた列数になり、その多くは空です。
配列が付随的な情報なら、変換の前に 1 つの文字列に結合したほうが読みやすい列になります。配列そのものが分析の対象なら、1 要素につき 1 行になるよう先に展開してください。
この変換はページに読み込まれた JavaScript だけで行われ、ファイルを運ぶ通信は一切発生しません。アカウントも 1 日の上限もなく、ネットワークタブで確認できます。
本番のログには IP アドレス、セッション識別子、リクエストのパス、しばしばトークン付きのクエリ文字列まで含まれます。それをどこかの変換サービスに送ることこそ、多くの組織で許されない行為です。
無料枠は 100 MB までです。数十メガバイトなら問題なく処理でき、数百メガバイトになるとブラウザーのタブが重くなり始めます。
NDJSON は改行の位置ならどこで分割しても安全な形式なので、大きなログは split で分けてから変換しても構いません。数ギガバイトの規模なら、ストリーミング処理の道具のほうが適しています。
| NDJSON | CSV | |
|---|---|---|
| 正式名称 | Newline-Delimited JSON | Comma-Separated Values |
| 拡張子 | .ndjson, .jsonl | .csv |
| メディアタイプ | application/x-ndjson | text/csv |
| 最初の公開 | 2013 | 1972 |
| 仕様 | — | RFC 4180 |
| ライセンス | オープン標準 | オープン標準 |
| 現在の位置づけ | 現行 | 現行 |
| ブラウザで開けるか | 対応なし | 対応なし |
| 代わりに検討される形式 | JSON | XLSX, JSON, Parquet |
pandasは NDJSON と CSV のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。
CSV は 1972 年から使われています。規定は RFC 4180 です。Microsoft Excel、LibreOffice Calc、pandasがこの形式を読めます。
CSV は 1972 年、NDJSON は 2013 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
NDJSON と CSV は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 入れ子のオブジェクトは平らにされて列になります。深く入れ子になったデータは形を失います。
変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん Comma-Separated Values を表示するのに使っているソフトが必要です。