商业智能研究(十七) Mondrian 如何使用 materialized view
在第十四篇文章中,我把所有关于 agg 开头的表全部都重命名了,所以才得到了我后面要分析的sql ,如果没有把agg 开头的表重命名的话,得到的sql 是不一样的 :
select "agg_c_10_sales_fact_1997"."the_year" as "c0",
sum("agg_c_10_sales_fact_1997"."store_sales") as "m0",
sum("agg_c_10_sales_fact_1997"."store_cost") as "m1"
from "agg_c_10_sales_fact_1997" "agg_c_10_sales_fact_1997"
where "agg_c_10_sales_fact_1997"."the_year" = 1997
group by "agg_c_10_sales_fact_1997"."the_year";
你会发现很多的数据都是从 agg 开头的表中取来的. 列出其中的 "agg_pl_01_sales_fact_1997" table 是怎样填数据的,这个脚本是从命令行执行java 语句的时候在最后一段,从命令行copy出来的.
INSERT INTO "agg_pl_01_sales_fact_1997"
("product_id", "time_id", "customer_id", "store_sales_sum",
"store_cost_sum", "unit_sales_sum", "fact_count")
SELECT "product_id" AS "product_id", "time_id" AS "time_id",
"customer_id" AS "customer_id",
SUM ("store_sales") AS "store_sales",
SUM ("store_cost") AS "store_cost",
SUM ("unit_sales") AS "unit_sales", COUNT (*) AS fact_count
FROM "sales_fact_1997"
GROUP BY "product_id", "time_id", "customer_id"
这个 agg 开头的表就相当于是materialized view 了,只不过不是所有数据库都有materialized view ,所以就用不同的table 来存储数据.
当我们把 agg 开头的表重命名以后,mondrian 就找不到了,所以才会直接去相应的表里面取数据,这个定义是在mondrian 里面的 foodmart.xml 文件里面定义的.在WEB-INF/queries 下面.
这种表叫做 aggregate 表 ,也就是可以用这种表来强制mondrian 使用我们的materialized view ,
mondrian 官方推荐使用materialized view 建立这种 aggregate 表,你可以看到在Cube
元素,有关这些表的定义.
所以我们定义的materialized view 可以直接在foodmart.xml 里面定义.关于如何建立mondrian 的 schema 文件,可以参考mondrian 的官方主页,里面写的很详尽了 .
如果你要写mondrian 的 schema 文件,建议使用mondrian 里面的workbench ,这个软件是jaspersoft 里面的一个人写的. pentaho 官方的那个cube desinger 我根本就打不开,不知道是不是什么配置问题.
6月7号 收到了pentaho community 的邮件,因为我参加了他们的beta programmer .新的1.6 release 马上就要发布了,其中提到了6个新的特性.
1 . Web-based Ad Hoc Query and Reporting
2 . Pentaho Metadata
3 . Security
4 . Subscriptions 一个基于时间调度的计划任务.1.5.2 才加入的新特性,使用户更容易得到自己想要的信息.算是pentaho KPI 的一种实现手段.
5 . RDBMS repository
6 . Mondrian Schema and Data cache flushing
你可以看到其中的 1-5 都是跟metadata 有关的,可见metadata 的 管理对于商业智能也是越来越重要了.
由于我可能会抽出一定时间参与pentaho 1.6 的测试工作,所以更新Blog 的速度会慢下来.当然,等全部的工作做完了,我还是会写几篇关于参与pentaho 测试的文章的,也欢迎大家与我讨论pentaho 的问题,
我会加所以给我留言的朋友为好友,并跟他们交换msn . 希望能和喜欢商业智能,开源软件的朋友一起共同进步.
有哪位朋友可以推荐一下武汉的公司,最好是小一点的公司(大公司估计自己水品有限),如果有需要J2EE开发方向的工作职位的话,推荐一下, jj12tt@yahoo.com.cn ,先谢谢了.