olap - 蒙德里安:似乎无法使用聚合表

标签 olap mondrian olap4j

我一直在努力让聚合表发挥作用。这是我的事实表的样子:

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

我只是折叠日期的年份部分。其余字段保持原样。这是我的配置:

<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"/>

我的大部分内容是从 documentation 复制聚合表的第二个示例。 。我的大多数列都没有折叠到表中,而是维度表的外键。

我尝试执行的查询类似于:

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

问题是,当我调试它并打开日志记录时,我看到如下所示的位键:

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

我的查询的位模式是:

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

因此我的聚合表被跳过。然而,这些列正是折叠到表格中的列。但查询和聚合表之间的位位置不同。我觉得奇怪的另一件事是,一部分列折叠到表中,但所有 AggForeignKeys 都没有作为位包含在内,因此如果我对这些列进行查询,则该聚合表将被跳过?这与我的计划相反。我的计划是只要您对年份边界进行查询就使用此聚合表。

我不明白为什么这不起作用以及为什么它无法正确构建位 key 。我尝试过调试 mondrian 代码,但弄清楚哪个列映射到位键中的哪个位置并不明显。我觉得这不应该这么难,但是外面的一切并不能很好地解释这一点。而这个聚合表架构实在是要打破。

我做错了什么?为什么我的解决方案不起作用?

<小时/>

更新这是我的 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。

关于olap - 蒙德里安:似乎无法使用聚合表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782583/

相关文章:

c# - 类似于 SQLite 或 SQL CE 的可移植 OLAP 数据库

mdx - 筛选 MDX 中特定成员的维度

mysql - Mondrian - XML 形式的事实表数据

mdx - 是否有(开源)基于 MDX 的内存中 OLAP 服务器?

java - Play Framework 2.1.0 - 使用 Class.forName 注册 JDBC 驱动程序时出现 NoClassDefFoundError

java - 来自 Java 代码的 Microsoft SSAS OLAP 连接

ssas - 如何在给定的时间内创建或仍然打开所有项目

oracle - 模拟OLAP

java - 预处理数据以进行报告