PostgreSQLに続いて、開発中のPivotテーブルアプリケーションのMySQL対応が終わったので、試しにオープンデータを読み込んで動かしてみました。

人間がものを考える上でファクトはとても重要です。テレビや新聞・ネットでは恣意的な情報が溢れていますが、思考の前提がそのような状態では思考が歪んでしまいます。

利用したデータは日本政府が公開している雇用統計のデータで、それをCSV形式でダウンロードしMySQLデータベースに取り込みました。この5千件ほどのデータをデータベースに読み込むのに3分くらいかかりました。

Pivotテーブルでは評価軸(Dimension)を複数設定して、それを行と列に並べて多次元のテーブルを作るのですが、そのままでは利用しにくいデータの場合は評価軸カラムを追加します。このデータの場合は統計期間が “2013000101” のような形式で記録されていたので、これを年と月に分解して追加した年カラムと月カラムに入れました。(この作業にかかった時間が10分くらいです)

Pivotテーブルアプリケーションからデータベースにアクセスします。(バックエンドにPivotサーバーが走っていて、実際にデータベースにアクセスするのはこのサーバーです。

ファクト生成ウィザードから「データベース」タブを選んでデータベース接続情報を入力します。「接続」ボタンを押すとデータベースに接続して設定したテーブルの列情報を取得します。

ファクト名を設定します。ユーザー毎にPivotサーバーにファクト情報を保存する仕組みになっていて、それを公開するか非公開にするかを選べるようにしています。

列のラベルを編集する。

これはPivotテーブルに表示するときに分かりやすいように列の表示名を入力する作業です。

評価軸の設定。

評価軸に使用する列を選択し、それらの並べ替えを行うかどうかを設定します。

評価値の設定。

このデータの場合は人数のみ。データによっては複数の評価値がある場合があります。

ファクトが出来ました。

ファクトを選択してPivotテーブルを表示します。

評価軸がドックに並んでいます。

評価したい軸を行と列にドラッグして並べるとテーブルを生成して表示します。この場合は行に「就労形態」と「業種」、列に「性別」を並べています。

「業種」を列からドックに戻した様子。

この例では、評価値は「人数(万人)」でそれを合計した数値を表示してますが、評価値毎に件数・平均・最大・最小・分散・標準偏差を表示することができます。

「統計年」を列に並べた様子。2013年から2019年のデータなのでテーブルが横長になりました。

評価軸はフィルターすることができます。この例では「統計年」を2017年と2018年のみに制限しました。

フィルターされたテーブル。

就労形態別・男女別に対前年比較をしているという状態です。

「性別」を行に移動してレイアウトを変えた様子。見やすさを好みでレイアウトを変更します。

全体の合計・平均・最大値・最小値を表示するオプション。「定期更新」を有効にすると定期的にデータベースを検索するので、刻々と変化するデータを集計することもできます。

総合計を表示した様子。

評価値が集計された各セルをダブルクリックすると詳細データを表示できます。XLSX形式のファイルにエクスポートすることができます。評価軸を増やせばドリルダウンしてデータを検索して利用できることになります。

Pivotテーブルの印刷。

ファクト情報はいくつでも作れます。これはPostgreSQLデータベースからファクトを生成しているところ。

PostgresSQLデータベースのデータでファクトを生成しPivotテーブルを表示している様子。この例では評価値が2つです。

現時点でデータベースはPostgresSQLとMySQLに対応しているだけですが、データアクセス部分はアダプター・デザインにしてAPIを規定しているので、後々、他のデータベースに対応するのも容易です。

未実装の機能として、

  • REST APIに対応したサービスに接続してデータを取得
  • グラフ表示
  • ビッグデータへの対応

などがあり、洗練されていない機能も多々あるので、そうそう短期間で完成するとは思えませんが、できるだけ早くフル機能のアプリケーションを公開できると良いと思っています。

15年ほど前に分散型の表計算ソフトを作ろうと思って設計をしたものの、開発能力が足りないインフラが整っていないなど様々な理由で諦めたんですが、未だにそのタイプのアプリケーションが世の中に存在していないので、いつかは完成させたいと思っています。今回の開発もその準備の一つなのですが、ちょっと寄り道が長いかなぁ。