问题:扇形陷阱导致报表生成数据不准确
结构:引起扇形陷阱的UNIVERSE设计结构通常如下图
这种结构通常情况下是不会产生扇形陷阱的。当一个查询包含一个B表上的度量,C表中的一个对象(任何对象,不论维度还是度量),这时产生的结果将会是错误的。什么时候陷阱会产生呢?由于数据库的设计,B表中的某一列保留数据值(是一个汇总的值),是C表中对应的列的汇总,这时陷阱出现了。
理解下什么是扇形陷阱,在如下的UNIVERSE结构中
扇形陷阱可能出现在查询中。the fan trap problem becomes apparent in a query that aggregates both an object based on the sale_total column in the sale table,and an object based on the sale_qty column in the sale_model table.
这当中到底发生了什么?
当执行第一个查询时,度量measure正确的被聚合,并且只是从一张表聚合。第二个是错误的,原因在于返回的数据,从两张表进行聚合
因为model_id的原因,本来应该只有一条数据的记录变成了两条,在聚合的时候值变大了,产生错误。
处理办法:
1.修改UNIVERSEsql参数(不推荐)
2.使用别名和上下文
以上面的案例来说明常见处理办法 :
universe结构修改后应该如下:
结构:引起扇形陷阱的UNIVERSE设计结构通常如下图
这种结构通常情况下是不会产生扇形陷阱的。当一个查询包含一个B表上的度量,C表中的一个对象(任何对象,不论维度还是度量),这时产生的结果将会是错误的。什么时候陷阱会产生呢?由于数据库的设计,B表中的某一列保留数据值(是一个汇总的值),是C表中对应的列的汇总,这时陷阱出现了。
理解下什么是扇形陷阱,在如下的UNIVERSE结构中
扇形陷阱可能出现在查询中。the fan trap problem becomes apparent in a query that aggregates both an object based on the sale_total column in the sale table,and an object based on the sale_qty column in the sale_model table.
这当中到底发生了什么?
当执行第一个查询时,度量measure正确的被聚合,并且只是从一张表聚合。第二个是错误的,原因在于返回的数据,从两张表进行聚合
因为model_id的原因,本来应该只有一条数据的记录变成了两条,在聚合的时候值变大了,产生错误。
处理办法:
1.修改UNIVERSEsql参数(不推荐)
2.使用别名和上下文
以上面的案例来说明常见处理办法 :
universe结构修改后应该如下:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-677991/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15720542/viewspace-677991/