このページの本文へ

前へ 1 2 3 次へ

BIとは? 基礎からわかる最新BI事情 第4回

ステップバイステップでPentahoを構成!

DWHを自分で作ろう!環境構築からデータ登録まで

2010年02月26日 09時00分更新

文● 鹿取裕樹/ビーブレイクシステムズ、TECH.ASCII.jp編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

小さなお菓子メーカーに勤める新入社員の津井田くんは、社長の一声でBI導入検討を任されることに。お目付役の土須先輩とともに、BIの勉強を始めます。

今回は、オープンソースのBIソフト「Pentaho」を、自分で設定してみます

土須   お! またパソコン弄りか。本業も忘れるなよ-。

津井田   ナニ言ってんですか。これも仕事なんですけど。むしろ先輩がナニもしてないんですが。

土須   アレか? Pentahoだっけ。こないだインストールしてちょっといじったの(関連記事)、面白かったな。

津井田   そうです。よく覚えてましたね。これからいよいよ設定するんですよ!

土須   え? ナニィ! そんなことお前、技術者にやってもらえ!

ミク   何それ。

津井田   あ! ミクちゃん。コレね、BIっていうんだよ。いろんなデータ分析ができるんだ。

ミク   へぇ~。お父さんの牧場経営にも役立ちそうね。

津井田   アレ? ミクちゃんのお父さんって、日記ばっかり書いてろくに仕事してなかったんじゃ?

ミク   最近牧場を買ったら大当たりしてね。大変みたいなの。

土須   あやかりたいねぇ。

津井田   Pentahoはオープンソースだから、個人経営の人も手軽に始められるよ。

ミク   でも設定が難しそうだな。

津井田   大丈夫。最初から丁寧にやっていきましょう!

PentahoでのBI構築

 今回からは実際にPentahoの機能を使用するための設定方法を説明していきたい。簡単な例題をもとにETL、多次元分析、レポート、ダッシュボードの順でPentahoの各ツールを使用して、設定方法を見ていく。理解を深めるために、皆さんも実際に設定を行なってみていただきたい。

BI Serverの構成

 これから様々な設定を行なっていき、その設定ファイルをBI Serverに配置し、設定を反映させていくことになる。そのため、まずはBI Serverの構成を見ていきたい。前回のインストールで「biserver-ce-3.5.0.stable」フォルダの下に「biserver-ce」が作成された。「biserver-ce」がBI Server本体であり、以降はこのフォルダをベースに説明していく。

biserver-ceのフォルダ構成

biserver-ceのフォルダ構成

「biserver-ce」の下には次の5つのフォルダがある。

data
RDBMS別のPentaho動作用データベース作成SQLおよびサンプルデータ
jre
Javaの実行環境JRE
licenses
ソフトウェアのライセンスに関する文書
pentaho-solutions
設定ファイルを配置する
tomcat
Tomcat 5.5およびPentahoのWebアプリケーション

 これらのうち、これからのPentahoでの構築作業では主に「pentaho-solutions」に対して作業を行っていく。それ以外のフォルダは標準の機能を利用する上でほとんど変更しない。

PostgreSQLでPentahoを動かす

 前回見たサンプルは、「Hypersonic」というDBのデータを使用して動作していた。これはサンプルを動かすためのDBであるため、通常、実際に構築する際には別のRDBMSを使用する。ここではRDBMSにPostgreSQLを用いることとし、PostgreSQLでPentahoを動作させるための設定を行なう。

前提の環境

PostgreSQL 8.4.2

 ここでは上記のPostgreSQLがすでにインストールされている前提で話を進めていく。本章では最終的にPostgreSQL内に下図のようなデータベースを作成する。

最終的なデータベースの構成

最終的なデータベースの構成

必要なファイルの配置

 DB接続のパフォーマンス向上のため、コネクションプーリング用のライブラリc3p0-0.9.1.2.jarを次の場所に配置する。

<code>
biserver-ce/tomcat/common/lib
</code>

 このファイルはhttp://sourceforge.net/projects/c3p0/からダウンロードできるc3p0-0.9.1.2.bin.zipに含まれる。

データベースhibernateのPostgreSQLへの作成

 Pentahoの分析機能、ダッシュボード機能の分析対象のデータに関する情報などを格納するデータベースとなる。psql.exeで次のファイルを実行する。パスワードの入力を求められた場合はpasswordと入力する。

<code>
biserver-ce/data/postgresql/
create_repository_postgresql.sql
</code>

 これにより、データベースユーザーhibuserとデータベースhibernateが作成され、データベースhibernateにテーブルdatasourceが作成される。

データベースquartzのPostgreSQLへの作成

 Pentahoでのジョブに関する情報を格納するデータベースとなる。今回の連載ではジョブについては扱わないが、Pentahoの動作上必要なため作成しておく。psql.exeで次のファイルを実行する。パスワードの入力が求められた場合はpasswordと入力する。

<code>
biserver-ce/data/postgresql/create_quartz_postgresql.sql
</code>

 これにより、データベースユーザーpentaho_userとデータベースquartzが作成され、データベースquartzにいくつかのテーブルが作成される。

データベースpentaho_dwhのPostgreSQLへの作成

まず、データベースユーザーpentahoを作成する。

<code>
CREATE USER pentaho PASSWORD 'password'
</code>

 つぎにデータベースpentaho_dwhを作成する。

<code>
CREATE DATABASE pentaho_dwh WITH OWNER = pentaho 
ENCODING = 'UTF8' TABLESPACE = pg_default;
</code>

 データベースユーザーpentahoにデータベースpentaho_dwhの権限を付与する。

<code>
GRANT ALL PRIVILEGES ON DATABASE pentaho_dwh to pentaho;
</code>

データベースsalesのPostgreSQLへの作成

 まず、データベースユーザーsalesを作成する。

<code>
CREATE USER sales PASSWORD 'password';
</code>

 つぎにデータベースsalesを作成する。

<code>
CREATE DATABASE sales WITH OWNER = sales ENCODING = 'UTF8' TABLESPACE = pg_default;
</code>

 データベースユーザーsalesにデータベースsalesの権限を付与する。

<code>
GRANT ALL PRIVILEGES ON DATABASE sales to sales;
</code>

データベースhibernateの
テーブルdatasourceへのDWHへの接続情報を登録する。

<code>
INSERT INTO DATASOURCE VALUES('PentahoDwh',20,'org.postgresql.Driver',5,'pentaho','cGFzc3dvcmQ=','jdbc:postgresql://localhost:5432/pentaho_dwh','',1000);
</code>

 1つめのパラメータはPentaho内でのこのデータソースの名前、5つめのパラメータはpentaho_dwhへの接続用データベースユーザー、6つめのパラメータは接続用パスワード(暗号化済み)である。

 また、前回見たサンプルも使用できるように、サンプルデータについての接続情報も登録しておく。


INSERT INTO DATASOURCE VALUES('SampleData',20,'org.hsqldb.jdbcDriver',5,'pentaho_user','cGFzc3dvcmQ=','jdbc:hsqldb:hsql://localhost:9001/sampledata','select count(*) from INFORMATION_SCHEMA.SYSTEM_SEQUENCES',1000);

context.xmlの変更

 データベースhibernateおよびquartzへの接続情報を記述する。

biserver-ce/tomcat/webapps/pentaho/META-INF/context.xmlを次のように変更する。

<resource auth="Container" driverclassname="org.postgresql.Driver" factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxactive="20" maxidle="5" maxwait="10000" name="jdbc/Hibernate" password="password" type="javax.sql.DataSource" url="jdbc:postgresql://localhost:5432/hibernate" username="hibuser" validationquery="select 1"><resource auth="Container" driverclassname="org.postgresql.Driver" factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxactive="20" maxidle="5" maxwait="10000" name="jdbc/Quartz" password="password" type="javax.sql.DataSource" url="jdbc:postgresql://localhost:5432/quartz" username="pentaho_user" validationquery="select 1"></resource></resource>

hibernate-settings.xmlの変更

 Pentahoで使用しているORマッピングツールHibernateの設定としてPostgreSQL用のファイルを使用するように変更する。

 biserver-ce/pentaho-solutions/system/hibernate/hibernate-settings.xmlを次のように変更する。

<config-file>system/hibernate/postgresql.hibernate.cfg.xml>/config-file>
</config-file>

postgresql.hibernate.cfg.xmlの変更

 上で指定したPostgreSQL用のファイルを、コネクションプーリングを使用できるように変更する

biserver-ce/pentaho-solutions/system/hibernate/postgresql.hibernate.cfg.xmlを次のように変更する。

<session-factory>の下に次を追加。	
<property name="hibernate.c3p0.acquire_increment">3</property>
<property name="hibernate.c3p0.idle_test_period">14400</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">75</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.timeout">25200</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1</property>
<property name="hibernate.c3p0.testConnectionOnCheckout">true</property>
</session-factory>

quartz.propertiesの変更

 biserver-ce/pentaho-solutions/system/quartz/quartz.propertiesの300行目を次のように変更する。


org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

 ここまでで、PostgreSQLのデータでPentahoの機能を使うことができるようになった。前回行なったように、Pentahoの起動とログインを試してみてほしい。前回と同様に使用できるはずだ。

 これからはPostgreSQLに実際にデータを登録し、各機能を使用していく。

次ページに「ETLでのDWHへのデータ統合」続く

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事
  • 角川アスキー総合研究所
  • アスキーカード