BIEE 11g 11.1.1.7.1跨事实指标不使用full outer join问题解决办法

来源:互联网 发布:ubuntu运行apk 编辑:程序博客网 时间:2024/05/29 19:41

当我们把环境升级到11.1.1.7.1之后,发现部分报表在特定情况下会出现没有数据的情况,通过检查生成的sql发现,在特定场合原本应该使用

full outer join的却变成了left outer join,导致最终数据的缺失。

 

下面以SampleApp V309为例,描述问题现象,并给出解决办法

 

如下图所示报表

 

1-Revenue来自F0 Sales Base Measures逻辑事实表

9- Full Time Empl  (Beg Period)来自F4 Headcount Base Measures逻辑事实表

Time为公共维度,另外Products只与F0 Sales Base Measures关联,不与F4 Headcount Base Measures关联

上面的报表没有什么问题,能够正确显示,如下图:

 

 

下面我们在对1-Revenue在Products维表上添加过滤

 

结果如下图所示:

 

我们会看到由于非公共维度(Products)的引入,会使得9- Full Time Empl  (Beg Period)显示为空,怎么解决这个问题?

其实可以把9- Full Time Empl  (Beg Period)在Products的聚合级别设置为Total即可

 

 

然后在查看结果

 

可以看到,缺少了2009 Q4的那条记录(虽然2009 Q4的Revenue为空,但是Full Time Empl却是有数的,这个时候也应该显示出来才符合逻辑)

查看SQL可以发现,是由于使用了left out join导致的

 

 

 

通过联系oracle support知道,这是由于7.1的调整造成的,可以通过将会话变量 FOJ_GRAND_TOTAL_LBM的值设置为1来解决,

或者升级到11.1.1.7.140415来解决

 

方法如下:

在rpd中新建FOJ_GRAND_TOTAL_LBM会话变量,并设置默认初始值为1,由于会话变量必须和初始化块绑定,随便新建一个初始化块并将其禁用即可!

 

 然后注销、重新登录,清除相关缓存,重新查看报表,显示正常:

 

 

 

 

 

 

 

另外:如果你想针对单个分析来进行测试,你还可以在分析的高级选项页里下方的前缀里填上

set variable FOJ_GRAND_TOTAL_LBM=1;

如下图所示:

 

 

 

0 0