AccessHeaderImage.png

データ加工ツールとしてのMS-Access

エクセルのデータの取り込み

時系列横持ちデータの取り込み

Excelデータを取り込む場合、ありがちでやっかいなのがこの時系列横持ちデータです。
横持ち.PNG

人間にとっては横持ちの方が理解しやすい(というより、横持ちじゃないと理解できない)のですが、システムにとっては縦持ちの方が処理しやすいのです。

縦PNG.PNG

もう少し掘り下げると、RDBの世界でデータの正規化という考え方があります。

データは業務的な要件に依存させず、データとしての意味のまま保存することによりデータの再利用性を高めることが正規化の目的です。
時系列データの横持ちは、例えば表示する期間や長さ、並び順や場合によっては集計列など「特定の業務要件」に依存しています。このため、シチュエーションが変われば加工が必要となってしまいます。

MS-AccessはRDBのため、正規化されたデータを扱いやすいのは当然ですが、その他多くのシステムでもデータのロードは正規化されたデータが前提に作られています。

業務上時系列横持ちデータが必要な場合でも、データそのものは多くのシステムで標準的な「正規化された」状態で保存し、表示・出力する場合に横持ちに加工して出力した方がデータの再利用という観点で効率的です。

「普通そうしているだろう。」と思う人もいるかもしれませんが、業務ユーザーは入手したデータを管理するときに時系列の表にデータを打ち込んで管理しているケースがあります。こういった現場のデータを取り込もうとすると意外に時系列横持ちのデータしか存在していないことがあるのです。

と、ここまでは理屈の話ですが、、
実は「やっかい」と書いたのは、MS-Accessは標準で時系列横持ちのデータを正規化されたデータに変換してくれるような便利ツールはありません。(他のソフト含め、一般的には標準機能として持っているケースは限られるようです。)

後にデータ分析でQlikviewというソフトを用います。(個人ユースではライセンスフリー)
Qlikviewに時系列横持ちデータを縦に変換してくれる機能があるため、それを利用すると楽に処理できます。
実際の使用方法についてはQlikviewのパートで記述します。


ちなみに通常、縦横の変換はSQL(RDBの問い合わせ言語)を使って記述します。
時系列横持ちデータを縦持ちに変換するのは簡単なSQLで実現できるのですが、時系列の数が多い場合、例えば月々のデータ2年分あったりすると簡単なSQL文を24個書いてそれらを一つ一つ UNION ALL で連結することになります。(簡単なのですが、面倒で間違いやすい作業なのです。)
さらに月が変わって24ヶ月のレンジが動いてしまうと、基本書き直しです。(動的SQLという手はありますが、、)

SQLは分かってしまえば協力な武器となりますが、ここでは基本的にSQLを書くことはしません。
が、UNION ALL だけは何度か出てきますので、言葉だけ覚えておいてください。
要はなんかのテーブルの後ろに他のテーブルを連結し、1つのテーブルにする命令です。


|1|2|3|4|

次のページへLinkIcon

LINK