关于ALL表和SUM表之间的聚合关系与BIEE出数据方式

关于ALL表和SUM表之间的聚合关系与BIEE出数据方式

 

SUM表是ALL表关于某一个字段或者多个字段的聚合,SUM表中的数据颗粒度更大,检索速度更加的快。

 

BIEE中经常地使用到ALL表和SUM表。最近在佳通项目中遇到一个问题:在一个逻辑表中有6个源表来自物理层,如下表:

说明

Sources tables

备注

预算数据+实际数据

ALL_ALL

 

SUM_ALL

关于ALL_ALLITEM_TYPE的聚合

预算数据

BUDGET_ALL

 

BUDGET_SUM

关于BUDGET_ALLITEM_TYPE的聚合

实际数据

ACTUAL_ALL

 

ACTUAL_SUM

关于ACTUAL_ALLITEM_TYPE的聚合

理想的出数据的方式为:

如果仅需要ITEM_TYPE级别的实际数据,则BIEEACTUAL_SUM出数据;

如果仅需要ITEM_TYPE级别的预算数据,则BIEEBUDGET_SUM出数据;

如果需要ITEM_TYPE级别的实际数据+预算数据,则BIEESUM_ALL出数据。

但是,结果却是不管是需要ITEM_TYPE级别的实际数据还是预算数据BIEE都从ALL_ALL出数据。百思不得其解啊!

但是,经过反复的比较,我发现以上六张表中的字段存在差异,如下表:

ALL_ALL

SUM_ALL

BUDGET_ALL

BUDGET_SUM

ACTUAL_ALL

ACTUAL_SUM

ITEM_NUMBER

ITEM_TYPE

ITEM_NUMBER

ITEM_TYPE

ITEM_NUMBER

ITEM_TYPE

 

 

ITEM_TYPE

 

ITEM_TYPE

 

我们对比三张ALLALL_ALLBUDGET_ALLACTUAL_ALL发现ALL_ALL中不存在ITEM_TYPE字段,然后,我在ALL_ALL的物理层中添加ITEM_TYPE字段(首先,我修改数据库中的ALL_ALL表,后来我把数据库中的ALL_ALL表中的ITEM_TYPE删除,结果依然正确!爽),并在逻辑表中完成映射。从新查询问题解决了!!

 

经过反复的试验以及和同事之间讨论,我得出SUM表在做聚合的时候,SUM表中的字段只能是ALL中字段的真子集,也就是说SUM表中不能存在ALL中没有的字段。

 

同时,我也推断,BIEE是按照由ALLSUM的顺序进行出数据的。具体的说来,BIEE首先查看ALL表中的字段,然后检查SUM中的字段,如果SUM表中的字段为ALL表中字段的真子集,那么,从SUM表出数据,否则从ALL表出数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值