JSONファイル
JSON ファイルを読み込むときに使える設定と、キーと値の並びが表に変換されるときの決まりを説明します。ファイルタイプで json を選んでいるときだけ出る項目です。
対応ファイル形式
| 拡張子 | 中身 |
|---|---|
.json | 中身が JSON Lines の形になっているファイル |
.jsonl | 1 行に 1 件ずつ書いた JSON(JSON Lines)形式のファイル |
設定項目
どちらもチェックボックスで、既定では OFF です。
- 文字コードを指定する
- ON にすると文字コードの欄が出ます。一覧から選ぶのではなく、自分で打ちます。はじめから
cp932が入っているので、JSON では多くの場合utf8に書き換えることになります(JSON の標準は UTF-8 です)。 - 圧縮形式を指定する
- ON にするとファイルの圧縮タイプの欄が出ます。こちらは一覧から選びます。選べるのは拡張子から自動判別 / なし /
zip/gzip/bz2の 5 つで、はじめはzipが選ばれています。
OFF のままだと何を見て決まるか
| 設定 | OFF のときの決まり方 |
|---|---|
| 文字コード | ファイルの先頭 8KB を読んで判定します。 判定できないときは utf8 になります。圧縮したファイルは中身を見ずに utf8 扱いになります(解凍前の 8KB は字として読めないため) |
| 圧縮形式 | 拡張子で決まります。 .gz は gzip、.bz2 は bz2、.zip は zip、どれでもなければ圧縮なしです。読めるのはこの 3 つだけです |
このファイルタイプで出る項目
JSON はほかの形式より出る項目が少ない形式です。
| 項目 | 出るか |
|---|---|
| 文字コードを指定する / 圧縮形式を指定する | 出る |
| 列にファイル名を追加する / 列にフォルダ名を追加する | 出る |
| 区切り文字を指定する | 出ない(区切り文字という考え方がないため) |
| 読み込む列を指定する | 出ない(件ごとにキーが違いうるため) |
| 先頭から行数をスキップし以降を読み込む | 出ない |
| 各ファイルから読み込む行数を指定する | 出ない |
| 1行目を列名として扱う | 出ない(キーがそのまま列名になるため) |
表に変換されるときの決まり
キーが列名になり、1 件が 1 行になる
{"名前": "田中", "年齢": 30, "都市": "東京"}{"名前": "佐藤", "年齢": 25, "都市": "大阪"}| 名前 | 年齢 | 都市 |
|---|---|---|
| 田中 | 30 | 東京 |
| 佐藤 | 25 | 大阪 |
件ごとにキーが違うときは、すべてのキーが列になる
ない値は空欄(<NA>)になります。
{"名前": "田中", "年齢": 30}{"名前": "佐藤", "都市": "大阪"}| 名前 | 年齢 | 都市 |
|---|---|---|
| 田中 | 30 | <NA> |
| 佐藤 | <NA> | 大阪 |
入れ子と配列は JSON の文字列のまま 1 つのセルに入る
展開はされません。 セルに入るのは、ダブルクォーテーションを使った JSON の書き方のままの文字列です。
入れ子・配列・深い入れ子の例
入れ子
{"名前": "田中", "住所": {"都市": "東京", "郵便番号": "100-0001"}}| 名前 | 住所 |
|---|---|
| 田中 | {“都市”:“東京”,“郵便番号”:“100-0001”} |
配列
{"名前": "田中", "スキル": ["Python", "SQL", "JavaScript"]}| 名前 | スキル |
|---|---|
| 田中 | [“Python”,“SQL”,“JavaScript”] |
深い入れ子
{"ユーザー": {"プロフィール": {"名前": "田中", "詳細": {"年齢": 30}}}}| ユーザー |
|---|
| {“プロフィール”:{“名前”:“田中”,“詳細”:{“年齢”:30}}} |
中の値を列として取り出したいときは、読み込んだあと分析プロジェクトのJSON列を展開するを使います。
値の型
型ごとの読まれ方
| JSON の値 | 読み込み後 |
|---|---|
| 数値 | 数値型 |
| 文字列 | 文字列型 |
| 真偽値 | true / false の文字列型(小文字) |
null | 空欄(<NA>) |
| 入れ子 | JSON の文字列 |
| 配列 | JSON の文字列 |
よく使う例
1. ログの JSON Lines をそのまま取り込む
| 見るところ | 中身 |
|---|---|
| お題 | アプリのイベントログが 1 行 1 件の JSON で出力されている |
| 入力 | events/2024-01-01.jsonl |
| 設定 | ファイルタイプで json を選び、ほかは何も変えない |
| 出力 | キーが列名、1 行が 1 イベントの表になる |
2. 文字化けする JSON を読む
| 見るところ | 中身 |
|---|---|
| お題 | 社内システムが出した JSON の日本語が記号の並びになる |
| 入力 | master.json(Windows で作られたもの) |
| 設定 | 文字コードを指定するを ON にし、文字コードを cp932 のままにする |
| 出力 | 日本語が読める |
3. 入れ子の中の値を列にする
| 見るところ | 中身 |
|---|---|
| お題 | {"住所": {"都市": "東京"}} の「都市」だけを列にしたい |
| 入力 | users.jsonl |
| 設定 | データソース側では何もしない。読み込んだあと、分析プロジェクトでJSON列を展開するを住所列に当てる |
| 出力 | 都市が独立した列になる |
4. 圧縮したままの JSON を読む
| 見るところ | 中身 |
|---|---|
| お題 | 日次ログが .jsonl.gz で置いてある |
| 入力 | logs/2024-01-01.jsonl.gz |
| 設定 | 何も変えない(圧縮形式を指定するは OFF のまま) |
| 出力 | 拡張子から gzip と判定され、そのまま読み込まれる |
関連
CSV/TSV/Textファイル ほかの形式
Excelファイル ほかの形式
Parquetファイル ほかの形式
JSON列を展開する 入れ子を列にする
画面構成(ファイル系データソース) 画面のどこにあるか
ファイル読み込みの仕様補足 扱えるファイル
特殊なデータ表示の仕様 空欄の見え方