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

浏览: 2289

当我们把环境升级到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
本文由 风在身后 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册