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

前端之家收集整理的这篇文章主要介绍了关于ALL表和SUM表之间的聚合关系与BIEE出数据方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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级别的@H_502_2@实际数据,则BIEE@H_502_2@ACTUAL_SUM出数据;

如果仅需要ITEM_TYPE级别的@H_502_2@预算数据,则BIEE@H_502_2@BUDGET_SUM出数据;

如果需要ITEM_TYPE级别的@H_502_2@实际数据@H_502_2@+@H_502_2@预算数据,则BIEE@H_502_2@SUM_ALL出数据。

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

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

@H_403_535@

BUDGET_ALL

ALL_ALL

SUM_ALL

BUDGET_SUM

ACTUAL_ALL

ACTUAL_SUM

ITEM_NUMBER

ITEM_TYPE

ITEM_NUMBER

ITEM_TYPE

ITEM_NUMBER

ITEM_TYPE

ITEM_TYPE

ITEM_TYPE

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

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

@H_502_2@

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

猜你在找的设计模式相关文章