蒙德里安:似乎无法得到聚合表使用

我一直在努力获得聚合表的工作。 这是我的事实表看起来像:

employment_date_id dimension1_id dimension2_id dimension3_id dimension4 dimension5 measure1 measure2 measure3 

我从年,季度和月份折算了employment_date_id ,仅包括了年份,但其他列都包含在内。 这是我的聚合表看起来像:

 yearquartermonth_year dimension1_id dimension2_id dimension3_id dimension4 dimension5 measure1 measure2 measure3 fact_count 

我只是倒塌了一年的一部分date。 其余的字段保持原样。 这是我的configuration:

 <AggFactCount column="FACT_COUNT"/> <AggForeignKey factColumn="dimension1_id" aggColumn="dimension1_id"/> <AggForeignKey factColumn="dimension2_id" aggColumn="dimension2_id"/> <AggForeignKey factColumn="dimension3_id" aggColumn="dimension3_id"/> <AggMeasure name="[Measures].[measure1]" column="measure1"/> <AggMeasure name="[Measures].[measure2]" column="measure2"/> <AggMeasure name="[Measures].[measure3]" column="measure3"/> <AggLevel name="[dimension4].[dimension4]" column="dimension4"/> <AggLevel name="[dimension5].[dimension5]" column="dimension5"/> <AggLevel name="[EmploymentDate.yearQuarterMonth].[Year]" column="yearquartermonth_year"/> 

我大部分是从文档中复制聚合表的第二个例子。 我的大多数列没有折叠到表中,并且是维度表的外键。

我试图执行我的查询是这样的:

 select {[Measures].[measure1]} on COLUMNS, {[EmploymentDate.yearQuarterMonth].[Year]} on ROWS from Cube1 

问题是,当我debugging它,打开日志logging,我看到这样的位键:

 AggStar:agg_year_employment bk=0x00000000000000000000000000000000000000000000000111111111101111100000000000000000000000000000000000000000000000000000000000000000 fbk=0x00000000000000000000000000000000000000000000000000000001101111100000000000000000000000000000000000000000000000000000000000000000 mbk=0x00000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000 

而我的查询的位模式是:

 Foreign columns bit key=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 Measure bit key= 0x00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000 

所以我的聚合表被跳过。 但是,这些是确切的列被折叠到表中。 但是查询和聚合表之间的位置是closures的。 另一件我觉得奇怪的是,一部分列被折叠到表中,但所有的AggForeignKeys都不包括在内,所以如果我用这些列进行查询,这个聚合表将被跳过? 这与我计划的相反。 我的计划是,只要你在一年的边界查询使用这个聚合表。

我不明白为什么这不起作用,为什么它不能正确地build立位键。 我试过debuggingmondrian的代码,但搞清楚哪些列映射到位键中的哪个位置不明显。 我觉得这不应该这么难,但是那里的一切都不能很好地解释这一点。 而这个聚合表架构是真的打破。

我究竟做错了什么? 为什么我的解决scheme不工作?


更新这是我的mondrian.properties文件:

 mondrian.jdbcDrivers=com.mysql.jdbc.Driver,oracle.jdbc.driver.OracleDriver mondrian.rolap.generate.formatted.sql=true mondrian.rolap.localePropFile=locale.properties mondrian.rolap.aggregates.Use=true mondrian.rolap.aggregates.Read=true mondrian.trace.level=2 mondrian.drillthrough.enable=true 

可能是这种情况mondrian.rolap.aggregates.Read设置为true,mondrian.rolap.aggregates.Use设置为false。 请设置mondrian.rolap.aggregates.Use=true并检查。 参考: http : //mondrian.pentaho.com/documentation/configuration.php

如果不是这种情况,请附上与聚合表和完整立方体定义XML相关的所有属性。

Interesting Posts