【Tableau初心者向け】jsonデータの分析の入門

新卒3年目の可視化分析官の寺内です。

json形式のデータを分析したいと思うこと、ありますよね。 例えば、APIのレスポンスデータなどはjson形式のことも多いです。

そんな時にも、Tableauが使えます。面倒な前処理も必要なく、基本的には簡単です。 ただ、少し取っつきにくさがあります。 そこで、今回は、Tableauでjson形式のデータを分析したことがない人向けに、最低限必要なことを記事としてまとめました。

サンプルのjson形式のデータ

本記事で扱う説明用のサンプルデータはこちらです。

f:id:gri-blog:20210523150342j:plain
サンプルのjson形式のデータ

※記事の本筋ではないですが、json形式の詳細な定義を知りたい人は、下記をご参照ください。

JSON入門 - とほほのWWW入門

Tableauでjson形式のデータを読み込む際の仕組み

Tableauは基本的には表形式のデータを扱うツールです。しかし、(表形式でない)json形式のデータも扱えるのは、Tableauが内部でjson形式のデータを表形式のデータに読み換えているからです。

すなわち、基本的には、この内部での読み換え以外は、csvやエクセルデータなどの表形式のデータを扱うときの仕組みと同じです。つまり、この読み換えが重要で、それさえ理解できれば(初心者として)十分です。

内部読換のパターン(サンプルデータ)

内部読換のパターンは、下記の図から読み取れます。

f:id:gri-blog:20210523144845j:plain
内部読換のイメージ

内部読換のパターンのポイントを下記にまとめました。 (言葉で表現すると一気に分かりにくくなるので、上で何となくを理解した上で読むことをお勧めします)

  • 配列[...]の要素であるオブジェクト{...}が、行になる

  • オブジェクトのキーとバリューの組が、「フィールド名」と「値」の組となる(例えば、A1とa1_1の組)

  • キーについて、対応するバリューがオブジェクトであるような場合、表形式のデータには組み込まれない(例えば、A2やB2)

※ネストした子オブジェクトの場合、直上の親オブジェクトのキーが、その子オブジェクトが基である「フィールド」が属する「フォルダ名」となる(例えば、A2がB1が属するフォルダ名、B2がC1とC2が属するフォルダ名)

Tableauでjson形式のデータを読み込む際の操作

繰り返しになりますが、Tableauでは、json形式と表形式のデータを扱うときとで、内部読み換えすること以外に大きな違いはありません。

スキーマの選択

その他のあまり本質的ではない違いとして、Tableauでjson形式のデータを読み込むと、下記のような、スキーマを選択する操作が必要であることを挙げておきます。

f:id:gri-blog:20210523153546j:plain
Tableauでjson形式のデータを読み込む際の設定

これは、単に使用列をチェックし不使用列をアンチェックする、という狭い意味でのスキーマ選択でしかないです。したがって、分析に必要な列が分かっていれば簡単です。大抵の場合ここで悩むことはないように思います。

このスキーマ選択機能が、jsonを読み込んだ時にのみ存在する理由(本筋ではない)

jsonファイルでは、キーが同じオブジェクトが大量に存在しやすいです(例えば、jsonではネストが許されるので、id,name,itemなどのキーが頻出します)。 そのため、Tableauで読み込んだ時、似たフィールド名がワークブックに大量に存在してしまうので、分かりにくくなってしまいがちだと思います。 これを防ぐために、この機能が存在するのではないかと推測しています。

(発展的な話題)コマンドでjsonのデータを更新する際の注意

発展的な話題になるので、気になる人以外読み飛ばしてください。

ここまで散々、json形式と表形式のデータを扱うときとで、本質的な違いはない、と話してきました。 しかし、予めTableau ServerやOnlineにPublishしたjson形式のデータを、コマンドで更新するときは、注意が必要です。

例えば、tab refreshextractコマンドでTableau Serverに存在するjson形式のデータを更新しようとしたが出来なかった、という話を伺ったことがあります。 ServerやOnlineにjson形式のデータを日次で自動更新していきたいときなどには、予め検証する必要がある、ということです。

最後に

できるだけイメージで理解できるよう説明を心掛けたつもりですが、いかがでしたでしょうか。 皆さまのjson形式のデータの分析へのハードルが少しでも下がったら幸いです。

寺内