エンジニアの将来って?

現在7年目のCOBOL→Java→C#エンジニアが、将来への考えや勉強のアウトプット、たまに腎臓について書くブログです

データウェアハウスとは?情報処理試験の午前問題で出された問題もまとめました!

こんにちは。たいら(@tairaengineer2)です。

情報処理試験のどんな午前問題でも出てくる可能性があるデータウェアハウス
今回の記事はデータウェアハウスについてを書いていきます。
最後の方で実際に情報処理試験の午前問題で出題されたものをまとめました。

f:id:Tairax:20180220210221p:plain

目次

データウェアハウスとは

データウェアハウス 【 data warehouse 】 DWH
データウェアハウスとは、企業などの業務上発生した取引記録などのデータを時系列に保管したデータベース。また、そのようなシステムを構築・運用するためのソフトウェア。「ウェアハウス」(warehouse)は「倉庫」の意。

データウェアハウスとは - IT用語辞典から引用させて頂きました

データウェアハウスとは、その名の通り倉庫のように大量にデータを持っているデータベースの1つです。
データウェアハウスは企業の取引の記録を大量に保存しているので、個人が使うということはほぼないと言ってしまっていいかもしれません。

どんな時に使われるのか

データウェアハウスはこれまで蓄積したデータを分析して今後に活かすために使われます。

データウェアハウスには、これまでの企業取引のデータを時系列に沿ってすべて保存しています。
その大量にあるデータを使って、分析したり比較を行います。
その結果から、どういう戦略を立てようか、顧客にどうしたらもっと買ってもらえるかを考えていきます。
データウェアハウスを使った事例では下記が最も有名です。

www.itmedia.co.jp

データウェアハウスの特徴

データウェアハウスには次の4つの特徴があります。

  1. サブジェクト指向
  2. データを統合する
  3. 時系列を持つ
  4. データの削除や更新をしない

1つずつ詳しく見ていきます。

サブジェクト指向とは

【subject oriented】 「サブジェクト・オリエンテッド」

利用者の主題を軸に、利用プロセスの統合力を高める設計指向。
情報を収集管理ごとではなく、活用テーマごとに編成すること。データウェアハウスのモデリング用語としてよく使われる。

サブジェクト指向とは - はてなキーワードから引用させて頂きました

とても分かりやすい解説がありましたので、ご紹介します。

データをサブジェクト(主題)ごとに分解、整理して格納します。目的別に格納しないのがポイントです。これはちょうど図書館での資料整理の方法に似ています。図書館では本をその内容によって分類していますね。海外出張前の情報収集用とか卒業論文の資料集め向け、というような利用目的別には整理していないのと同じイメージです。

データウェアハウスと単なるデータベースの違い - International Blogから引用させて頂きました

この例でいうと、料理系や宇宙系といった分野で分けているのがサブジェクト指向の考え方です。
海外旅行用や引っ越し用といった使用用途で分けているのがデータベースの考え方です。

データを統合するとは

企業のいろんな部署からデータを集めて使いやすくすることです。

f:id:Tairax:20180304190910p:plain

部署からデータを集めてみると御覧の通り、見事にテーブルの項目名がバラバラですね。
設定している内容は同じっぽい気がしますが、部署Cに至っては項目数が1つ多いです。
こんなバラバラデータに対して同じ意味となるように統合します。

f:id:Tairax:20180312195321p:plain

こんな感じで同じ意味になるように統合します。
今回の例ではありませんでしたが、重複しているデータがあれば、重複しないよう統合します。

時系列を持つとは

データウェアハウスは先ほども書きましたが、大量のデータを分析したり比較を行います。
そのため過去の企業の取引記録を残しておくことで、どのような企業と取引したのか、どれくらいのお金が発生したのかが把握できるのです。

f:id:Tairax:20180312195516p:plain

赤枠のところを見てください。
データウェアハウスではこのように時系列に沿ってデータを保存します。
このように保存することで、過去と現在の比較や分析を行いやすくします。

どうやって作られるのか

データウェアハウスは、企業のいろんな部署から得た取引データに対して、
ETL
という操作を実行することで作られます。
では、ETLとは何でしょうか?

ETLとは

Extract/Transform/Load(略称:ETL)とは、データウェアハウスにおける以下のような工程を指す。
・Extract - 外部の情報源からデータを抽出
・Transform - 抽出したデータをビジネスでの必要に応じて変換・加工
・Load - 最終的ターゲット(すなわちデータウェアハウス)に変換・加工済みのデータをロード

Extract/Transform/Load - Wikipediaから引用させて頂きました

ETLのイメージはこんな感じです。

f:id:Tairax:20180304191326p:plain

企業のいろんな部署からのデータを取得して、そのデータをまとめて、加工した最終形態がデータウェアハウスです。
その最終形態になるためにデータを加工していくのがETLです。

Extractとは

ETL工程の第1の部分は、情報源となるシステムからデータを抽出することである。たいていのデータウェアハウス構築では、複数の情報源からデータを集積する。個々のシステムはデータの構成やフォーマットが他とは異なる可能性がある。
(中略)
抽出の本質は、抽出したデータの構文解析であり、それによってデータが期待したパターンや構造に適合しているかどうかを調べる。適合していない場合、データは抽出対象から除外される。

Extract/Transform/Load - Wikipediaから引用させて頂きました

実際にどういうことなのでしょうか?
先ほどのイメージ図で説明していきます。
もともとのデータが先ほどお見せしたように格納されているとします。

f:id:Tairax:20180304190910p:plain

これらのデータの本質を考えます。

 

部署Aではお客様、部署Bと部署Cでは取引会社としている項目は意味的には同じだな

 

 

とか

 

部署Cでは取引時間までのデータがあるが、ほかの部署には無いし、不要なデータだから抽出しない

 

 

というようにデータウェアハウスに格納するデータを選別していきます。
そして抽出された結果がこちら。

f:id:Tairax:20180313212725p:plain

部署Cから取引時間の項目がなくなりました。
このように抽出するデータを選定するのがExtractです。
これでデータを加工するための準備が整いました。

Transformとは

変換・加工工程では、情報源から抽出したデータに一連の規則や関数を適用し、ターゲットにロードできるデータにする。データによってはほとんど変換・加工を必要としないこともある。それ以外の場合、以下のような変換を1つ以上加えることで、最終ターゲットが必要とする形にする。

  • 特定のカラム(列)だけを選択する(ロードしない場合はNullカラムを選択)。
  • 符号値の変換(例えば、ある情報源で男性を"1"、女性を"2"としていて、データウェアハウスでは男性を"M"、女性を"F"としている場合など)を自動データクレンジングと呼ぶ。ETLにおいては、手動でのクレンジングは発生しない。
  • 個人情報の秘匿 (例えば住所・氏名・電話番号など "*" などに変換する)
  • 自由形式の値を符号化(例えば、"男性" を "1" に、"Mr" を "M" にマッピングするなど)
  • 新たに計算した値を導出(例えば、「売上高 = 販売数 * 単価」といった計算)
  • 複数の情報源のデータの統合(マージなど)
  • 複数行のデータの集約(例えば、販売店ごとの総売り上げ、地域ごとの総売り上げなど)
  • 代替キー値生成
  • 転置または回転(行と列の入れ替え)
  • カラムを複数のカラムに分割する(例えば、CSV形式で1つのカラムに複数の要素がある場合、それを分割して複数のカラムにする)。
  • 単純または複合データの妥当性検証を任意の形式で適用する。規則設計と例外処理によって、そのデータを次のステップに渡すかどうかを決定する。上述の変換・加工の多くは、例外処理の一部として実行される(例えば、ある位置のデータが期待した符号で解釈できない場合など)。

Extract/Transform/Load - Wikipediaから引用させて頂きました

Transformとは、データウェアハウスに格納するために同じ様式となるようにデータを加工することです。
先ほどの例を見ましょう。

f:id:Tairax:20180313212725p:plain

これは整っているので加工する必要がありません。
Transformしなくてもよいです。
しかし次のようなものだった場合どうでしょうか。

f:id:Tairax:20180315214052p:plain

格納しているデータの意味は同じですが、様式が異なります。
例えば部署Aと部署Cでは取引日を「yyyy/MM/dd」形式で保存していますが、部署Bでは「yyyy年MM月dd日」です。
注文個数もカンマ区切りにしているしていないなど、細かい違いがあります。
このような場合にTransformをします。

部署Bの注文日を「yyyy年MM月dd日」形式から「yyyy/MM/dd」に直したり、部署Cのカンマ区切りにしないようにするなどします。
このように同じデータ形式になるようにするのがTransformです。

Loadとは

ロード工程は、データを最終ターゲット(通常はデータウェアハウス (DW) )にロードする。

Extract/Transform/Load - Wikipediaから引用させて頂きました

もうそのままです。
Extractで抽出したデータを、Transformで最適な様式に加工し、最後にデータウェアハウスに格納するのがLoadです。
Loadし終わると、データウェアハウスの完成です!

実際に出た試験

データウェアハウスについて分かりました!
では、実際に問題を解いてみましょう!
情報処理試験で、午前問題に出題された問題をピックアップします。

基本情報

平成22年春期問33 データウェアハウス|基本情報技術者試験.com

平成23年特別問35 データディクショナリ|基本情報技術者試験.com

平成27年秋期問64 データマイニング|基本情報技術者試験.com

※平成18年秋期問35と平成22年春期問33は同じ問題なので、平成22年春期問33のみ載せてます。

応用情報技術者試験

平成22年秋期問28 データウェアハウス|応用情報技術者試験.com

平成24年秋期問29 ETLツール|応用情報技術者試験.com

問題の傾向とまとめ

傾向としてデータウェアハウスとは何なのか、という基本を押さえているかどうかが出題されるようです。
午前問題に出題されるので、土台を問うてくる問題が多いのでしょう。

以上がデータウェアハウスについてのアウトプットです。
いかがだったでしょうか?
少しでもお役に立てれば幸いです。
ではでは~(・ω・)ノシ

 

ほかにも勉強記事を書いてます。
よければご参考ください。

私が基本情報処理試験に合格したときの勉強方法をご紹介します!

EVMとは?情報処理試験の午前問題で出された問題もまとめました!

MTBF、MTTRの違いは?それらを使って表す稼働率とは?情報処理試験の午前問題で出された問題もまとめました!

5フォース分析(5F分析)とは?情報処理試験で出題された問題もまとめました!