问题描述:
在pentaho中,利用kettle执行数据ETL后,数据仓库中的dimention、cube数据发生变化,但是pentaho中用于数据多维展示的mondrian展示/缓存的数据并没有随数据仓库中数据的变化相应的变化,这就造成了展示的数据和数据仓库的实际数据不一致。
问题分析:
mondrian为了保证展示数据的速度,默认的是将取出的数据通过Aggregate Manager缓存(这么做也符合数据仓库的特点)。但是实际的应用中,dimention中数据可能会变更,这时mondrian面对mdx查询仍取的事缓存的数据。
解决方法:
在kettle进行数据ETL时,同时触发Mondrian清空相应的缓存数据。
具体做法就是在利用Action sequence发布kettle的transform或job时,在“Process Actions”中添加一个“JavaScript”process Actions,然后在javascript配置界面的“Javascript”下填入以下代码:
并在“script outputs”下写入Name为“no_output”,type为“String”的参数。
具体配置界面如下图:
相应的xml为: